gpt4 book ai didi

javascript - 如何将 Material 分配给 ColladaLoader 或 OBJLoader

转载 作者:行者123 更新时间:2023-11-29 18:20:04 25 4
gpt4 key购买 nike

我查看了文档和许多示例,但无法找到将 Material 分配给 Collada .dae 或 OBJLoader .obj 文件的正确语法。

Json 文件在创建 Mesh 并将加载器作为几何体和 Material 作为设置 Material 时似乎可以正常工作。

这样的代码有效

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

我还在 function(geometry) 中尝试了 geometry.material = new THREE.MeshLambertMaterial({ color: 0xff0000}); 但没有成功。

.Dae 格式似乎保留了直接来自 Cinema 等 3D 程序的 Material 颜色。我怎样才能正确地为这些装载机设置 Material ?如果这甚至可能的话。

最佳答案

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

} );

对于 ColladaLoader,模式类似。

var loader = new THREE.ColladaLoader();

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

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

} );

three.js r.62

关于javascript - 如何将 Material 分配给 ColladaLoader 或 OBJLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19555369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com