나는 그 위에 마우스를 올리면 색상을 변경하고 싶은 입방체가 있습니다. 이것은 하나의 텍스처 만 사용하는 경우에 작동하지만, 지금은 텍스처 배열을 사용하여 이것을 하나의 면당 하나의 텍스처로 사용하고 싶습니다.Three.js 텍스처링 및 강조 표시 문제
if (intersects.length > 0)
{
// if the closest object intersected is not the currently stored intersection object
if (intersects[ 0 ].object != INTERSECTED)
{
// restore previous intersection object (if it exists) to its original color
if (INTERSECTED)
INTERSECTED.material.color.setHex(INTERSECTED.currentHex);
// store reference to closest object as current intersection object
INTERSECTED = intersects[ 0 ].object;
// store color of closest object (for later restoration)
INTERSECTED.currentHex = INTERSECTED.material.color.getHex();
// set a new color for closest object
INTERSECTED.material.color.setHex(0x118D08);
}
나는이 작동하지 않습니다 호버에서이 색상 변경을하고 나는 이러한 오류를 얻을 때 :
catch되지 않은 형식 오류 : 정의되지 않은 [반복 13 회]의 속성을 읽을 수 없습니다 'setHex'
을 Uncaught TypeError : 정의되지 않은 'getHex'속성을 읽을 수 없습니다.
큐브는 내가 원하는 방식으로 텍스처링되어 있으므로 오류가 발생하지 않습니다. 내 생각에는 MeshFaceMaterial에는 색상 매개 변수가없는 것과 관련이 있다고 생각합니다. 아무도 내가하려고하는 것이 가능하거나 내가 잘못 가고있는 아이디어가 있다면 말해 줄 수 있습니까?
그래서 'MeshBasicMaterial'을'MeshFaceMaterial'으로 변경 했습니까? 'INTERSECTED'와'intersects [0]'에 대해 더 자세히 설명해 주시겠습니까? 후자는 (Face3 인스턴스에 첨부 된 'materialIndex'를 사용하여) 삼각형 단위로 인덱싱되는 다른 머티리얼의 컨테이너 일뿐입니다. 색인을 생성해야합니다. sidenote로 : 루프와 조건에서 항상 중괄호를 사용하십시오 ([세미콜론 삽입] 참조) (http://stackoverflow.com/questions/2846283/what-are-theules-for-javascripts-automatic-semicolon-insertion -asi)) –
intersects [0]은 장면의 객체 배열의 요소이고 INTERSECTED는 마우스가 교차 한 객체와 색상을 변경하려는 객체입니다. MeshFaceMaterial의 색상을 변경하는 것이 가능한지 정말로 알고 싶습니다. 다음 줄을 생각해 봅니다 : INTERSECTED.material.color.setHex (INTERSECTED.currentHex); 변경하려는 요소가 정확하지 않기 때문에 오류가 발생합니다. –
['MeshFaceMaterial'] (http://threejs.org/docs/index.html#Reference/Materials/MeshFaceMaterial)에는 색상 자체가 없습니다. 상자의 개별면에 설정된 기타 재료를 집계합니다. 다른 재질을 만들어 메시 위에 직접 설정해보십시오. 코드를 최소화하고 [jsfiddle] (http://jsfiddle.net/)에 업로드하십시오. –