我使用Three.JS渲染导出为场景的Blender对象,因此它使用的是ObjectLoader,而不是Json Loader。我也在使用CanvasRendering引擎。当对象重叠时会出现问题;它对材料做了半透明效果。
我使用哪种搅拌机出口并不重要;我已经选择并导出了其他Blender文件,无论设置如何,它们都会产生这种效果。
以下是我用来放置物品和材料的代码。
var loader = new THREE.ObjectLoader();
loader.load("../js/lights.json", function(object) {
var material = new THREE.MeshToonMaterial( { color: 0x3f3f3f, alphaTest: 0.5 } );
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material = material;
child.drawMode = THREE.TrianglesDrawMode;
};
});
object.scale.set(3, 3, 3);
object.position.x = 1;
object.position.y = 1;
object.position.z = 1;
object.rotation.set( 25, 25, 25 );
scene.add( object );
}
);
我使用的材料类型,从Lambert到Phong,我仍然遇到这种重叠透明度问题。我错过了什么?谢谢!
编辑:在评论之后,我已经做出了所要求的更改。现在正在使用WebGL渲染器而不是Canvas。这就是我现在拥有的,模型现在根本没有出现,但我的控制台没有错误。var loader = new THREE.ObjectLoader();
loader.load("../js/lights.json", function(object) {
var material = new THREE.MeshBasicMaterial( { color: 0x333333 } );
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material = material;
child.geometry.computeFaceNormals();
child.material.overdraw = 0.5
};
});
object.scale.set(3, 3, 3);
object.position.x = 1;
object.position.y = 1;
object.position.z = 1;
object.rotation.set( 25, 25, 25 );
scene.add( object );
}
);
答案 0 :(得分:0)
您的模型位于视口之外,这就是您没有看到它的原因。在https://codepen.io/anon/pen/qPmyPz?editors=0010加载您的模型,您可以看到它。现在注释80-82行(这是默认行为)并重新加载模型。你再也看不到了。
这些行会转动controls
,以便您可以看到模型:
var bb = new THREE.Box3()
bb.setFromObject(scene);
bb.center(controls.target);