【问题标题】:How can i set materials to collada child in THREE.js如何在 THREE.js 中将材料设置为 collada child
【发布时间】:2015-06-02 12:01:09
【问题描述】:

我在搅拌机中创建了一个场景,它包含一些没有材质的网格,然后我将它导出到 collada,我使用 colladaloader 将它加载到 three.js 场景中,一切都很好,但是当我使用以下代码将一些材质给孩子时:

        loader.load( "../models/islands/"+islandselected.getAttribute("data-model")+".dae", function(object){
        scene.remove("island");
        plane=object.scene;
        plane.name=islandselected.innerHTML;

        plane.traverse(function(child){
            if(child.children[0]){
                if(child.children[0].geometry){
                    console.log(child)
                    var t = new THREE.ImageUtils.loadTexture( '../models/islands/'+child.name+'.jpg' );
                    t.wrapS = t.wrapT = THREE.RepeatWrapping;
                    t.repeat.set( 50, 50 );
                    var ma= new THREE.MeshBasicMaterial( {map:t} );
                    child.children[0].material=ma
                }
            }
        });
        plane.scale.set(100,100,100);

        scene.add(plane);
    });

我在控制台中遇到错误: [.WebGLRenderingContext]GL 错误:GL_INVALID_OPERATION:glDrawElements:尝试访问属性 1 中超出范围的顶点 empcreator.jsp:1 WebGL:错误太多,不会再向控制台报告此上下文的错误。

【问题讨论】:

    标签: three.js collada


    【解决方案1】:
            var model,mat;
    
            var loader = new THREE.ColladaLoader();
            var lastTimestamp = 0;
            var progress = 0;
    
            loader.load( 'obj/mymodel.dae', function ( collada ) {
    
                model = collada.scene;
    
                model.children[3].children[0].material = new THREE.MeshPhongMaterial({map:THREE.ImageUtils.loadTexture('obj/images/myimage.jpg')}); 
                console.log(model.material);                
                model.scale.x = model.scale.y = model.scale.z = 0.10; 
                model.rotation.y = 0.80;
                scene.add( model );
             }
    
            //you will need to modify a little to work it, i took it from my old project
    

    【讨论】:

    • 都是256*256
    • 如果我用颜色替换地图就会加载!
    • 执行我,它适用于颜色而不是纹理,我想将纹理添加到材质而不是颜色。
    猜你喜欢
    • 2012-01-07
    • 2015-03-25
    • 1970-01-01
    • 2013-11-12
    • 2013-04-20
    • 2019-02-26
    • 2015-02-05
    • 2021-11-13
    • 2020-02-22
    相关资源
    最近更新 更多