0

嗨,我已经尝试了不同的源代码来向几何图形添加材料,但是如果我添加这样的代码:

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

我没有得到我的 obj(模型)的阴影/材质。它就像一个平面视图。示例:http ://dev.interactive-creation-works.net/Three/viewer.html

// 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 );

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

4

2 回答 2

2

你的模型有紫外线坐标吗?在 Three.js 中导入的这个问题对象中的代码完全一样。

于 2013-04-03T19:23:47.987 回答
1

使用不带线框属性的 MeshPhongMaterial(或 Lambert)来获得与灯光(阴影)配合得很好的材质。例如。

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

MeshBasicMaterial 总是平坦的。

此外,您只替换纹理(贴图),而不是加载回调/遍历函数中的材质。您需要将那里的材质分配给对象,如果您只替换贴图,材质类型将是 .obj 加载器创建的任何内容。

于 2013-04-03T23:14:16.810 回答