【问题标题】:Threejs Simplified Geometry has no colorThreejs简化几何没有颜色
【发布时间】:2018-03-24 20:32:36
【问题描述】:

我正在尝试 Threejs (https://threejs.org/examples/js/modifiers/SimplifyModifier.js) 的 SimplifyModifier,它工作正常,但输出几何形状在某些方面有所不同,这会阻止它有颜色。这是一个显示问题的小提琴:

https://jsfiddle.net/k29px10r/

var camera, scene, renderer, geometry, material, mesh;

init();
animate();

function init() {

  scene = new THREE.Scene();    
  camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000);
  camera.position.z = 7;
  scene.add(camera);

  geometry = new THREE.RabbitGeometry();

  modifer = new THREE.SimplifyModifier();
  //bigger number for second arg is more aggressive
  simplified = modifer.modify(geometry, geometry.vertices.length * 0.5 | 0);

  material = new THREE.MeshNormalMaterial();    
  mesh = new THREE.Mesh(geometry, material);
  scene.add(mesh);
  mesh.translateX( 1 );      
  mesh2 = new THREE.Mesh(simplified, material);
  scene.add(mesh2);
  mesh2.translateX( -1 );

  renderer = new THREE.CanvasRenderer();
  renderer.setSize(window.innerWidth, window.innerHeight);    
  document.body.appendChild(renderer.domElement);    
}

function animate() {    
  requestAnimationFrame(animate);
  render();    
}

function render() {    
  mesh.rotation.x += 0.005;
  mesh.rotation.y += 0.01;      
  mesh2.rotation.x += 0.005;
  mesh2.rotation.y += 0.01;    
  renderer.render(scene, camera);    
}

(在 Windows 上用 Chrome 和 FF 测试,以防万一)

出了什么问题 - 为什么简化的几何图形只有灰色,我该如何解决?

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    THREE.SimplifyModifier() 不会自动计算人脸法线。所以你可以在应用修饰符后进行:

    simplified = modifer.modify(geometry, geometry.vertices.length * 0.5 | 0);
    simplified.computeFaceNormals();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      相关资源
      最近更新 更多