2016-10-13 3 views
0

OBJ에서 동적으로 업데이트했습니다. "TypeError : child.material.color is undefined"에서 오류가 발생했습니다.. 이 오류가 발생한 이유 내 코드에서 실수가 무엇입니까?three.js에서 OBJ 오류의 색상을 업데이트 할 때 발생합니까?

var loader = new THREE.OBJLoader(manager); 
loader.load(file, function (object) { 
    object.traverse(function (child) { 
    if (child instanceof THREE.Mesh) { 
    // child.material.ambient.setHex(0xFF0000); 

    if(object_color!=""){ 

     //alert("object color entere"); 

     object_color=object_color.replace('#', '') 
     child.material.color.setHex("0x"+object_color); 
    } 
    } 
    });  
+0

.obj 파일에 .mtl (material) 파일이 있습니까? –

+0

예 물자 파일이 있습니다 –

+0

하지만 색상을 동적으로 변경할 수 있습니다 –

답변

0

, 문제는 OBJ를 가지고있다. 나는 유효한 obj를 체크했다, 잘 동작한다.

0
child.material.color 

이 형상의 확산 색상입니다. Obj 파일의 경우이 색상은 해당 .mtl 파일의 자료에 대해 정의됩니다. .mtl 파일이 없거나 지오메트리가 사용하는 재질에 .mtl 파일에 정의 된 확산 색이없는 경우 직면 한 문제가 발생할 수 있습니다.

당신은 다음 코드를 사용하여이 문제를 해결할 수 있습니다 - 위의 코드는 문제의 코드가 제대로 작동하지

if(child.material.color) 
    child.material.color.setHex("0x"+object_color); 
else 
    child.material.color = new THREE.Color("0x"+object_color); 
+0

위 코드를 테스트했습니다. 다른 부분을 입력하십시오. 그러나 색상이 아직 적용되지 않았습니다. –

+0

''0x "+ object_color' 문자열에서 16 진수 값으로 변환해야합니다. –

+0

코드에 문제가 없는지 확인했는데 Obj에 문제가 있습니다. –

관련 문제