Stworzyłem prostą aplikację WebGL 3D Panorama przy użyciu SphereGeometry
, PerspectiveCamera
i CanvasTexture
. Teraz chciałbym ożywić scenę, dodając "HotSpots" nad niektórymi częściami SphereGeometry
. Problemem, który mam, jest zrozumienie, jak zaktualizować różne DOMElements
, tak aby ich pozycja odzwierciedlała zaktualizowaną pozycję .THREE.js SphereGeometry Panorama hotspot za pomocą DOMElements
W zasadzie, gdy obraca się Camera
, różne DOMElements
będą się przemieszczać i oddalać w stosunku do kierunku, w którym kamera się obraca. Próbowałem umieszczenie <div>
absolute
do <canvas>
i translating
położeniu X
i Y
pomocą zwrócony PerspectiveCamera
camera.rotation
ale to naprawdę nie działa; oto mój JS & CSS implentation:
CSS
#TestHotSpot {
/* not sure if using margins is the best method to position hotspot */
margin-top: 50px;
margin-left: 50px;
width: 50px;
height: 50px;
background: red;
position: absolute;
}
JavaScript
/**
CONFIG is my stored object variable; it contains the PerspectiveCamera instance
code is being called inside of my RequestAnimationFrame
**/
config.camera.updateProjectionMatrix();
config.controls.update(delta);
document.getElementById("TestHotSpot").style.transform = "translate("+ config.camera.rotation.x +"px, "+ config.camera.rotation.y +"px)";
Here jest także żywo przykładem pożądanego efektu.
Jakie byłoby najlepsze rozwiązanie, aby rozwiązać ten problem? To, co zauważyłem, gdy to uruchomiłem, że DOMElements
tylko nieznacznie się poruszy; Zauważyłem również, że nie będzie naprawdę uwzględniające gdzie wzdłuż SphereGeometry
umieszczano je (na przykład, są umieszczone „za” Camera
;! Naprawdę kompleks
Cieszę się używać żadnych wtyczek dla silnika THREE.js
a także śledzić tutoriale. Dziękuję bardzo za odpowiedzi z góry!
Witam @serious_s, bardzo dziękuję za odpowiedź! Próbowałem znaleźć kilka dokumentów na temat tego, jak "cssObject", ale pojawił się z pustymi rękami. Czy masz przykład fragmentu kodu, który wyjaśnia, jak z niego korzystać? Nadal jestem trochę zdezorientowany - przepraszam! – lindsay
Cześć jeszcze raz! Po przeprowadzeniu dalszych badań, rozumiem teraz twoją odpowiedź - dziękuję za pomoc! Rewizja. – lindsay
Jeśli nie masz nic przeciwko, podziel się swoimi badaniami, jakie robiłeś lub jakie czytania robiłeś, co jeszcze znalazłeś, czy masz kilka dobrych linków, które być może pozwolą mi zrozumieć cały ten proces. Dziękujemy za wszelkie powiązane informacje, które możesz poprosić o udostępnienie. – lowtechsun