2012-12-14 21 views
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);

没有任何反应。 :(

如何添加细分?

+0

你有什么错误吗?(看看你的JavaScript错误控制台。) – Styxxy

回答

1

您正在试图修改mesh。你需要修改geometry

modifier.modify(geometry); 
+0

好吧,那就对了。谢谢! – mdrorum

+2

这似乎不工作了.. –

3

Here你可以找到一个工作demo一个很好的教程。引用作者:

// 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);