【发布时间】:2015-03-12 14:44:24
【问题描述】:
刚刚接触了three.js,我对一些可能相对简单的东西感到好奇......
我在 three.js 编辑器中构建了一个场景,并弄清楚了如何加载该场景。在编辑器中,我添加了一个图像作为地图纹理,但我意识到它不会知道它在我的服务器外部加载的位置。所以我已经加载了场景、物体和灯光,但是如何将我的纹理映射到物体上呢?
// MATERIALS
var wireframe = THREE.ImageUtils.loadTexture( 'textures/wireframe.jpg' );
wireframe.wrapS = wireframe.wrapT = THREE.RepeatWrapping;
wireframe.repeat.set( 4, 4 );
var wireframeMaterial = new THREE.MeshLambertMaterial({
map : wireframe,
side : THREE.DoubleSide
});
// LOAD SCENE
var loader = new THREE.ObjectLoader();
loader.load( 'js/scene.js', function ( obj ) {
obj.traverse( function( node ) {
if ( node instanceof THREE.Mesh ) {
node.castShadow = true;
node.receiveShadow = true;
var plane = scene.getObjectByName( "plane", true );
plane.material = wireframeMaterial;
}
});
scene.add( obj );
render();
});
在加载器中添加plane.material = wireframeMaterial; 时,我所有的对象都消失了……我怎样才能正确地将线框材料映射到平面对象?
var plane 和 plane.material 的工作示例注释掉:
http://goo.gl/czSg7P
【问题讨论】:
-
我再次更新了我的答案并添加了一个似乎有效的小提琴。
标签: javascript three.js texture-mapping