【问题标题】:Adding the same model to the scene more than once in THREE.js?在 THREE.js 中多次将相同的模型添加到场景中?
【发布时间】:2013-05-23 23:41:37
【问题描述】:

如何将同一个 dae 模型多次添加到场景中?

//loading collada model
var soldiers = [];
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load('soldier.dae', function(collada) {
    var dae = collada.scene;

    for(var i=0; i<10; i++){
        var new_soldier = new THREE.Mesh( dae.geometry, dae.material );
        soldiers.push(new_soldier);
        scene.add(new_soldier);
    }
});

错误是:dae.geometrydae.material 未定义。 我不知道如何解决它。

提前致谢,

【问题讨论】:

    标签: javascript three.js webgl


    【解决方案1】:

    collada.scene 变量是instanceof Object3D,因此它没有几何或材质属性。您需要做的是将 for 循环替换为:

    for(var i=0; i<10; i++)
        scene.add( dae );
    

    【讨论】:

    • for(var i=0; i&lt;10; i++) scene.add( dae ); 没有意义。我现在如何为这些对象提供不同的位置/旋转值?我只想获得十个具有相同模型的 3D 对象。
    • 好吧,如果您还想更改多次加载的模型的位置和比例,您可以克隆它。看看stackoverflow.com/questions/15669721/…
    • 在该示例中,有一个 JSON 加载器,它与 collada 加载器不同。如何从 collada 模型中获取 geometrymaterial 对象?
    • 如果你想要模型的几何形状和材质,你可以遍历对象找到它们。
    猜你喜欢
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多