【问题标题】:Collada model faces not displaying correctly in three.jsCollada 模型面无法在 three.js 中正确显示
【发布时间】:2012-07-30 23:41:13
【问题描述】:

将一个collada模型导入到three.js中后,模型的部分人脸只能从模型内部看到,从外部看不到。

如何解决相关面孔的问题?

是否可以让模特的脸从两侧都可见?

【问题讨论】:

标签: javascript three.js collada


【解决方案1】:

要修复方向不正确的面,请将模型加载到 Blender 之类的 3D 建模程序中,并翻转未正确显示的面的法线。

Three.js 网格有一个可以设置的双面属性,通常可以让您显示模型的面从两侧可见。

这是一个关于如何加载 collada 网格并启用双面渲染的简短示例。

var loader = new THREE.ColladaLoader();
loader.load('path/to/mesh.dae', loadModel);

function loadModel(geom) {
    var mesh = new THREE.Mesh(geom, new THREE.MeshBasicMaterial());
    mesh.doublesided = true;
    scene.add(mesh);
}

还有一个活生生的例子:http://jsfiddle.net/r7Yq2/

【讨论】:

  • 显然它在 r50 中发生了变化:现在应该在材质上设置它:material.side = THREE.DoubleSide; (我花了一段时间才发现!)
【解决方案2】:

它不能正常工作的原因是因为你的文件设置了这个双面标志:

<effect id="material_3_4_0-effect" name="material_3_4_0-effect">
   <profile_COMMON>
      ...
      <extra>
         <technique profile="GOOGLEEARTH">
            <double_sided>1</double_sided>
         </technique>
      </extra>
   </profile_COMMON>
</effect>

three.js ColladaLoader 不会查找此标志,而是按应有的方式在材质上设置 doubleSided。我已经 filed a bug 处理这个问题。

【讨论】:

    猜你喜欢
    • 2015-05-23
    • 2014-12-28
    • 2020-05-07
    • 2012-03-06
    • 2023-03-26
    • 2014-05-09
    • 2014-12-09
    • 2012-10-06
    • 2014-09-11
    相关资源
    最近更新 更多