9

STLLoader.jsを使用して ASCII (バイナリではない) .stl オブジェクト ファイルを Web ページに表示するための HTML のクリーンな「ダミー用」の例を作成できる人はいますか? 結果は、ユーザーが現在の HTML5 ブラウザーでオブジェクトを操作できるようにする必要があり、グレースケールのオブジェクトの表面と背景を超える凝ったビジュアルは必要ありません。

STLLoader.js には three.js または three.min.js の助けが必要かもしれませんが、私にはわかりません。STLLoader.js には以下の使用例が含まれていますが、HTML ラッパーは含まれていません。

STLLoader.js内での使用例

     /** 
     * Usage:
     *  var loader = new THREE.STLLoader();
     *  loader.addEventListener( 'load', function ( event ) {
     *
     *      var geometry = event.content;
     *      scene.add( new THREE.Mesh( geometry ) );
     *
     *  } );
     *  loader.load( './models/stl/slotted_disk.stl' );
     */
4

1 に答える 1

13

three.js の例は良いソースです。

https://github.com/mrdoob/three.js/blob/master/examples/webgl_loader_stl.html

ここに簡略化されたバージョンがあります:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>three.js webgl - STL</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
        <style>
            body {
                font-family: Monospace;
                background-color: #000000;
                margin: 0px;
                overflow: hidden;
            }

            #info {
                color: #fff;
                position: absolute;
                top: 10px;
                width: 100%;
                text-align: center;
                z-index: 100;
                display:block;

            }

            a { color: skyblue }
        </style>
    </head>
    <body>
        <div id="info">
            STL loader test
        </div>

        <script src="http://threejs.org/build/three.min.js"></script>

        <script src="http://threejs.org/examples/js/loaders/STLLoader.js"></script>

        <script>

            var container, camera, scene, renderer;

            init();
            animate();

            function init() {

                container = document.createElement( 'div' );
                document.body.appendChild( container );

                // renderer

                renderer = new THREE.WebGLRenderer( { antialias: true } );
                renderer.setSize( window.innerWidth, window.innerHeight );
                container.appendChild( renderer.domElement );

                // scene

                scene = new THREE.Scene();

                // camera

                camera = new THREE.PerspectiveCamera( 35, window.innerWidth / window.innerHeight, 1, 10000 );
                camera.position.set( 3, 0.5, 3 );
                scene.add( camera ); // required, because we are adding a light as a child of the camera

                // lights

                scene.add( new THREE.AmbientLight( 0x222222 ) );

                var light = new THREE.PointLight( 0xffffff, 0.8 );
                camera.add( light );

                // object

                var loader = new THREE.STLLoader();
                loader.load( 'slotted_disk.stl', function ( geometry ) {

                    var material = new THREE.MeshPhongMaterial( { color: 0xff5533 } );

                    var mesh = new THREE.Mesh( geometry, material );

                    scene.add( mesh );

                } );

                window.addEventListener( 'resize', onWindowResize, false );

            }

            function onWindowResize() {

                camera.aspect = window.innerWidth / window.innerHeight;

                camera.updateProjectionMatrix();

                renderer.setSize( window.innerWidth, window.innerHeight );

            }

            function animate() {

                requestAnimationFrame( animate );

                render();

            }

            function render() {

                var timer = Date.now() * 0.0005;

                camera.position.x = Math.cos( timer ) * 5;
                camera.position.z = Math.sin( timer ) * 5;

                camera.lookAt( scene.position );

                renderer.render( scene, camera );

            }

        </script>
    </body>
</html>

three.js r.70

于 2012-10-15T21:07:47.950 に答える