【发布时间】:2014-08-01 02:27:08
【问题描述】:
我是 Three.js 的新手,我需要建议。从 Blender(2.71 版)导出模型并加载到场景后,我看到我的三个侧面有纹理.....但第二面没有纹理......我必须启用双面纹理,但我不知道如何。我尝试了一些示例,但没有任何效果。我使用带有 alpha-chanel 的 .PNG 纹理格式。我也尝试在 Blender 中激活双面,但没有任何反应。
这是我的加载代码:
var three1;
var jsonLoader = new THREE.JSONLoader();
jsonLoader.load('3D/three1.js', addthree1ToScene);
function addthree1ToScene( geometry, materials )
{
var materiall = new THREE.MeshFaceMaterial( materials );
three1 = new THREE.Mesh( geometry, materiall );
three1.scale.set( 0.8, 0.8, 0.8 );
three1.position.set(50,15.5,0);
scene.add( three1 );
}
感谢您的建议! (对不起我的英语:))
更新:
..像这样的东西?..
var three1;
var jsonLoader = new THREE.JSONLoader();
jsonLoader.load('3D/three1.js', addthree1ToScene);
function addthree1ToScene( geometry, materials )
{
var materiall = new THREE.MeshFaceMaterial( materials );
for ( var i = 0; i < materials.length; i ++ )
{
var material = materials[i];
material.side = THREE.DoubleSide;
}
three1 = new THREE.Mesh( geometry, materiall );
three1.scale.set( 0.8, 0.8, 0.8 );
three1.position.set(50,15.5,0);
scene.add( three1 );
}
它的工作,顺便说一句:)
【问题讨论】:
-
对于
materials数组中的每种材料,设置material.side = THREE.DoubleSide; -
@WestLangley 我认为如果你有答案,你应该把它写在答案部分而不是 cmets :)
-
@mrdoob 好点。我在猜测我何时发表评论——通常是因为我不完全确定我理解用户的问题。一旦我澄清,我会发布答案。在这种情况下,你是对的。