4

私はこのような球に細分化を追加しようとしています:

http://stemkoski.github.com/Three.js/Subdivision-Cube.html

これが私のコードです:http://jsfiddle.net/mdrorum/HvFLw/

        <script src="http://mrdoob.github.com/three.js/build/three.js"></script>

            <script type="text/javascript">

            var camera, scene, renderer;
            var geometry, material, mesh;
            var smooth, subdiv, modifier;

            init();
            animate();

            function init() {

                camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
                camera.position.z = 1000;

                scene = new THREE.Scene();

                renderer = new THREE.CanvasRenderer();
                renderer.setSize( window.innerWidth, window.innerHeight );

                document.body.appendChild( renderer.domElement );

                geometry = new THREE.SphereGeometry( 200 );
                material = new THREE.MeshBasicMaterial( { color: 0x00ff00, wireframe: true } );

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

                var smooth = mesh.clone();
                var subdiv = 3;
                var modifier = new THREE.SubdivisionModifier( subdiv );
                //modifier.modify( smooth );


            }

            function animate() {

                requestAnimationFrame( animate );

                mesh.rotation.x += 0.01;
                mesh.rotation.y += 0.02;

                renderer.render( scene, camera );

            }

        </script>

これは正常に機能しますが、コメントを外します。//modifier.modify( smooth );

何も起こりません。:(

サブディビジョンを追加するにはどうすればよいですか?

4

2 に答える 2

3

ここでは、動作するデモを備えた優れたチュートリアルを見つけることができます。著者の引用:

// First we want to clone our original geometry.
// Just in case we want to get the low poly version back.
var smooth = THREE.GeometryUtils.clone( geometry );

// Next, we need to merge vertices to clean up any unwanted vertex. 
smooth.mergeVertices();

// Create a new instance of the modifier and pass the number of divisions.
var divisions = 3;
var modifier = new THREE.SubdivisionModifier(divisions);

// Apply the modifier to our cloned geometry.
modifier.modify( smooth );

// Finally, add our new detailed geometry to a mesh object and add it to our scene.
var mesh = new THREE.Mesh( smooth, new THREE.MeshPhongMaterial( { color: 0x222222 } ) );
scene.add( mesh );
于 2015-04-01T10:05:44.537 に答える
2

を変更しようとしていmeshます。を変更する必要がありgeometryます。

modifier.modify( geometry );
于 2012-12-14T14:56:06.313 に答える