如何将材质指定给ColladaLoader或OBJLoader [英] How to assign a material to ColladaLoader or OBJLoader

查看:768
本文介绍了如何将材质指定给ColladaLoader或OBJLoader的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经通过文件以及许多的例子看,并没有能够找到正确的语法分配材料到一个Collada的.dae或OBJLoader obj文件。

I have looked through the documentation as well as many examples and wasn't able to find correct syntax for assigning a material to either a Collada .dae or OBJLoader .obj file.

Json的文件似乎建立在正常上班网​​和具有加载器的几何形状和材料作为一组材料。

Json files seem to properly work when creating a Mesh and having the loader as geometry and material as the set material.

code这样的工作原理

Code like this works

var loader = new THREE.JSONLoader();
loader.load( "modelPath.js", function(geometry){
  var material = new THREE.MeshLambertMaterial({color: 0x666666});
  mesh = new THREE.Mesh(geometry, material);
  scene.add(mesh);
});

这不能正常工作

var loader = new THREE.ColladaLoader();
loader.load( "modelPath.dae", function(geometry){
  var material = new THREE.MeshLambertMaterial({color: 0x666666});
  mesh = new THREE.Mesh(geometry, material);
  scene.add(mesh);
});

和这不起作用

var loader = new THREE.OBJLoader();
loader.load( "modelPath.obj", function(geometry){
  var material = new THREE.MeshLambertMaterial({color: 0x666666});
  mesh = new THREE.Mesh(geometry, material);
  scene.add(mesh);
});

我也尝试 geometry.material =新THREE.MeshLambertMaterial({颜色:为0xFF0000}); 函数(几何)没有成功。

.Dae格式似乎直接让材料颜色从电影院一样的3D节目。如何设置一个材料,这些装载机正常吗?如果这是可能的,甚至

.Dae format seems to keep material color directly from 3D programs like Cinema. How can I set a material to these loaders properly? If this is even possible.

推荐答案

按照这个模式来 OBJLoader

var loader = new THREE.OBJLoader();

loader.load( 'model.obj', function ( object ) {

    var material = new THREE.MeshLambertMaterial( { color: 0x666666 } );

    object.traverse( function ( child ) {

        if ( child instanceof THREE.Mesh ) {

            child.material = material;

        }

    } );

    scene.add( object );

} );

有关 Col​​ladaLoader ,该模式是相似的。

For ColladaLoader, the pattern is similar.

var loader = new THREE.ColladaLoader();

loader.load( 'model.dae', function ( collada ) {

    var dae = collada.scene;
    scene.add( dae );

} );

three.js r.62

three.js r.62

这篇关于如何将材质指定给ColladaLoader或OBJLoader的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆