런타임시 서로 다른 표시 유형을 추가하고 제거하는 방법은 무엇입니까?런타임에 three.js 표시 등 추가 및 제거
각각 조명 유형을 나타내는 일부 체크 상자가 있는데 확인란을 선택하면 장면에 특정 조명 유형을 추가하고 선택하지 않으면 조명을 제거하고 싶습니다.
시도 : scene.remove(light)
및 light.visible = false
시도했지만 작동하지 않았습니다.
런타임시 서로 다른 표시 유형을 추가하고 제거하는 방법은 무엇입니까?런타임에 three.js 표시 등 추가 및 제거
각각 조명 유형을 나타내는 일부 체크 상자가 있는데 확인란을 선택하면 장면에 특정 조명 유형을 추가하고 선택하지 않으면 조명을 제거하고 싶습니다.
시도 : scene.remove(light)
및 light.visible = false
시도했지만 작동하지 않았습니다.
WebGLRenderer
으로 조명 수 또는 조명 유형을 변경하면 material.needsUpdate = true
을 설정해야합니다.
더 좋은 옵션은 광도를 0으로 설정하는 것입니다.
자세한 내용은 위키 문서 How to Update Things with WebGLRenderer을 참조하십시오.
three.js를 r.58
그것은 다음과 같이 나와 함께 일한 :
render(){
// some other code ....
//light
if($('#dLight').is(':checked')){
dLight.position.set($('#light-x').slider('value'),$('#light-y').slider('value'),$('#light-z').slider('value')).normalize();
dLight.intensity = $('#light-intensity-id').slider('value');
dLight.color.setHex('0x' + $('#light-color').val());
scene.add(dLight);
}else{
scene.remove(dLight);
}
if($('#pLight').is(':checked')){
pLight.position.set($('#light-x').slider('value'),$('#light-y').slider('value'),$('#light-z').slider('value'));
pLight.intensity = $('#light-intensity-id').slider('value');
pLight.color.setHex('0x' + $('#light-color').val());
scene.add(pLight);
}else{
scene.remove(pLight);
}
if($('#sLight').is(':checked')){
sLight.position.set($('#light-x').slider('value'),$('#light-y').slider('value'),$('#light-z').slider('value'));
sLight.intensity = $('#light-intensity-id').slider('value');
sLight.color.setHex('0x' + $('#light-color').val());
scene.add(sLight);
}else{
scene.remove(sLight);
}
if($('#aLight').is(':checked')){
aLight.position.set($('#light-x').slider('value'),$('#light-y').slider('value'),$('#light-z').slider('value'));
aLight.color.setHex('0x' + $('#light-color').val());
scene.add(aLight);
}else{
scene.remove(aLight);
}
}
숨길/표시 등 사용 : = false를 light.visible; // 또는 true
및 모든 자료가 필요하면 needsUpdate를 설정하십시오.
material.needsUpdate = true;
속성이 재료 객체 인 모든 객체가 하나의 객체 안에 있습니다.
for (var material in materials) {
if (materials.hasOwnProperty(material)) {
materials[material].needsUpdate = true;
}
}
이렇게하면 모든 업데이트를 볼 수 있습니다. needsUpdate 트릭을하기 전에 대부분의 경우 아무것도 볼 수 없습니다.
어떤 three.js 버전을 사용하고 있습니까? – WestLangley
여기에서 확인할 수 있습니다. https://github.com/rantiev/threejs-clock 개정판 72를 사용하여 거의 최신 77 버전을 시도했으며 작동합니다. 버전 번호인지 여부는 잘 모르지만 버전 번호가없는 파일은 맨 위 부분에 아무것도 표시되지 않고 버전 번호가있는 배너 설명은 없습니다. – Rantiev
죄송합니다. 나는 "개정"이라는 단어를 사용해야했다. "버전"은 동일한 것을 의미합니다. – WestLangley
감사합니다. 예, material.needsUpdate = true를 시도했지만 전역 var = material을 정의하고 설정하면 "정의되지 않은 속성의 needsUpdate를 설정할 수 없습니다."라는 오류가 발생합니다. mesh.material.needsUpdate = true가 사용되었습니다. 오류는 없지만 빛은 여전히 보입니다. 나는 jQuery를 사용하고 있으며 $ (document) .ready() 안에 checkbox에 대한 변경 이벤트를 넣는다. render() 함수 안에 change 이벤트를 넣으려고했지만 빛은 여전히 보입니다. 이 경우 궁금한 점은 이벤트 처리 기능을 넣을 곳이 어디인지에 있습니다. –