Chcę mieć powierzchnię odbijającego sześcianu na stronie WebGL z plikiem Three.js. Powinien przypominać wyświetlacz telefonu komórkowego, który odbija światło, ale wciąż musi być czarny.Jak mogę użyć odbicia w pliku three.js?
7
A
Odpowiedz
22
Stworzyłem przykład odbijającej kostki (a także odblaskową kulę) ze szczegółowymi komentarzami. Wersja na żywo jest
http://stemkoski.github.com/Three.js/Reflection.html
z kodem ładnie sformatowany w
https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/Reflection.html
(jest to część kolekcji przykładów wychowawczy na http://stemkoski.github.com/Three.js/)
Główne punkty to:
- dodaj do sceny drugi aparat (CubeCamera) umieszczony na obiekcie, którego powierzchnia powinna być odblaskowa.
- utwórz materiał i ustaw mapę środowiska jako wyniki renderowania z tej drugiej kamery, np.
na przykład:
var mirrorCubeMaterial = new THREE.MeshBasicMaterial(
{ envMap: mirrorCubeCamera.renderTarget });
- w funkcji renderowania, trzeba uczynić ze wszystkich kamer. Tymczasowo ukryj obiekt, który odbija (aby nie przeszkadzał ci aparat, którego chcesz użyć), wyrenderuj go z tej kamery, a następnie odkryj obiekt odbijający.
na przykład:
mirrorCube.visible = false;
mirrorCubeCamera.updateCubeMap(renderer, scene);
mirrorCube.visible = true;
te fragmenty kodu są z ogniw napisałem powyżej; Sprawdź je!