저는 평면 지오메트리로 월드 맵 레이어가 있습니다. 이제 다른 부분 (예 : 대륙 또는 국가)에서 클릭 이벤트를 처리하려고합니다. 특정 부분 (정보 또는 비디오 재생 팝업 또는 링크가있는 이미지 데이터 팝업 등)에서 팝업 이벤트를 처리하는 방법three.js 장면에서 클릭 이벤트를 처리하는 방법?
여기에 이미 장면 설정이있는 fiddle이 있습니다.
var camera, scene, renderer;
var geometry, material, mesh;
window.addEventListener("click", onClick, false);
function onClick() {
alert("Replace me with code to add an object!");
}
var init = function() {
renderer = new THREE.CanvasRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 1, 1000);
camera.position.z = 500;
scene = new THREE.Scene();
geometry = new THREE.CubeGeometry(200, 200, 200);
material = new THREE.MeshBasicMaterial({
color: 0x000000,
wireframe: true,
wireframeLinewidth: 2
});
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
}
var animate = function() {
requestAnimationFrame(animate);
mesh.rotation.x = Date.now() * 0.0005;
mesh.rotation.y = Date.now() * 0.001;
renderer.render(scene, camera);
}
init();
animate();
클릭 이벤트가 전체 장면에 적용, 그 예에 여러 개의 큐브를 생성 한이 모든 부분에 대해 동일한 클릭 이벤트를 보여주고 있음을 클릭했을 때.
@mahadevs 표면과 월드 맵이 텍스처로 만 나타납니다. 이런 식으로 상호 작용을 성취 할 수는 없습니다. 상호 작용이 필요한 각 파트에 대한 도형을 만들고, 내가 보낸 자습서에서 raytest를 수행하십시오. – Hasan
물론 시도해 보겠습니다. 자습서의 도움으로 –
, 나는 raycasting을 사용하여 클릭 이벤트를 만들었습니다. 하지만 문제는 드래그 앤 클릭 이벤트와 충돌이 있다는 것입니다. 패닝에는 onMouseDown 이벤트 (orbitcontrols)를 사용하고 클릭 이벤트에는 onDocumentMouseDown (event)을 사용합니다. 테스트 [link] (http://arkatest.com/testing/working/test1.html) –