2013-04-03 50 views
0

嗨,我已经尝试过不同的源代码添加材料几何,但如果我这样添加代码:three.js所 - 添加材料OBJ装载机(WEBGL)

var material1 = new THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true }); 

我不明白阴影/材料到我的obj(模型)。它像一个平面的视图。 例子:​​

// This string has to be the path to your texture file. 
loader.load('0.jpg'); 

/*** OBJ Loading ***/ 
var loader = new THREE.OBJLoader(); 

// As soon as the OBJ has been loaded this function looks for a mesh 
// inside the data and applies the texture to it. 
loader.addEventListener('load', function (event) { 
var object = event.content; 
object.traverse(function (child) { 
    if (child instanceof THREE.Mesh) { 
    child.material.map = texture; 
    } 
}); 

// object = new THREE.Mesh(geometry, [ new THREE.MeshFaceMaterial(), new THREE.MeshPhongMaterial({ color: 0xff4400, wireframe: true, wireframeLinewidth: 2 }) ]); 
object = new THREE.Mesh(geometry); 

// My initial model was too small, so I scaled it upwards. 
object.scale = new THREE.Vector3(25, 25, 25); 

// You can change the position of the object, so that it is not 
// centered in the view and leaves some space for overlay text. 
object.position.y -= 2.5; 
scene.add(object); 

}); 

// This string has to be the path to your object file. 
loader.load('0.obj'); 

// We set the renderer to the size of the window and 
// append a canvas to our HTML page. 
renderer = new THREE.WebGLRenderer(); 
renderer.setSize(window.innerWidth, window.innerHeight); 
container.appendChild(renderer.domElement); 

任何人都可以最终帮助我吗?

回答

2

您的模型是否有UV线?在这个问题object importing in Three.js中的代码做了完全相同的事情。

+0

Hi gaitat, 是的,它有紫外线和纹理的作品。你可以看到它的头部是红色的,角部像黄色。 – 2013-04-03 20:00:46

+0

你在场景中没有灯光。只是一个环境。方向性被评论。 – gaitat 2013-04-03 20:27:28

+0

谢谢,直接。光线使它更好一些.F5 但仍然与Zbrush视图不同: http://dev.interactive-creation-works.net/Three/character.png 最终你知道一个简单的obj加载代码示例,附加一个.mtl或标准垫子,如phong,basic,lambert? 你知道我可以投票给你的帮助吗? – 2013-04-03 20:47:38

1

使用不带线框属性的MeshPhongMaterial(或Lambert)可以获得可以在灯光(阴影)下播放的材质。例如。

var material1 = new THREE.MeshPhongMaterial({ color: 0x00ff00 }); 

MeshBasicMaterial始终保持平坦。

此外,您只替换纹理(贴图),而不是负载回调/遍历函数中的材质。如果只替换地图,则需要将物料分配给物体,物料类型将是.obj加载程序创建的物料类型。