Czy w przypadku Three.js można wyświetlać siatkę zawsze wyświetlaną na górze sceny, nawet jeśli jej pozycja znajduje się za wszystkimi obiektami? Wprowadzam wybór lasso z siatką i muszę wyrenderować pole wyboru na górze reszty sceny.Three.js - Geometria na wierzchu innego
Odpowiedz
Tak.
Pierwszy to zrobić:
renderer.autoClear = false;
Następnie utworzyć drugą scenę, która zawiera tylko te obiekty, które mają być na szczycie. Następnie w renderowanie pętlę:
renderer.clear(); // clear buffers
renderer.render(scene, camera); // render scene 1
renderer.clearDepth(); // clear depth buffer
renderer.render(scene2, camera); // render scene 2
EDIT: Innym rozwiązaniem jest mieć tylko jedną scenę, ale korzystać z tego wzoru:
mesh.renderOrder = 999;
mesh.onBeforeRender = function(renderer) { renderer.clearDepth(); };
Jeżeli siatka ma pojedynczy materiał, to będzie renderuj "na wierzchu".
Three.js r.85
Jeśli chcesz uczynić tylko jedno oczko z przodu można również zarządzać poprzez ustawienie depthTest
dla materiału tego obiektu false
:
var onTopMaterial = new THREE.MeshStandardMaterial({
color: 'red',
depthTest: false
});
mesh.material = onTopMaterial;
Sprawdź demonstation w this fiddle
Uwaga: Sprawdź, czy masz renderer.sortObjects
ustawiono domyślną wartość true
.
To _nie jest to dobry pomysł. Istnieje wiele pułapek. Po pierwsze ustaw 'transparent: true' na niebieskich sześcianach. Ale największym problemem jest to, że ustawiając 'depthTest = false', tak zwana" on top mesh "nie będzie już sama sprawdzać głębi, co może prowadzić do renderowania artefaktów. – WestLangley
@WestLangley Dzięki za twoją opinię. To, że jest w konflikcie z przejrzystymi ustawieniami, jest w moim przypadku do przyjęcia, ale o artefaktach nie jestem pewien. Jak to przetestować? Muszę tymczasowo przesunąć obiekt przed wszystkimi innymi na 'mouseover' i z powrotem na' mousout'. Wydaje mi się, że dodanie go tymczasowo do innej sceny nie jest pożądane w takim przypadku. – Wilt
Podejrzewam podejście w zaakceptowanej odpowiedzi, chyba że masz bardzo ograniczony przypadek użycia. – WestLangley
- 1. jak umieścić element na wierzchu innego elementu?
- 2. div na wierzchu iframe
- 3. Transforming Geometria do BufferGeometry
- 4. 3D Gra Geometria
- 5. Geometria obliczeniowa JavaScript
- 6. geometria pasków kolorów w matplotlib
- 7. za pomocą three.js JSONLoader
- 8. Rysowanie prostokąta na wierzchu AVCaptureVideoPreviewLayer, możliwe?
- 9. Zawsze na wierzchu div wewnątrz obszaru
- 10. Niestandardowy rysunek na wierzchu obrazu tła UIButtona
- 11. Dodaj UIImage na wierzchu innej UIImage
- 12. Okno ExtJS 4 "zawsze na wierzchu"
- 13. Jak utrzymać moje najwyższe okno na wierzchu?
- 14. Jak przechowywać QWidget zawsze na wierzchu?
- 15. Element graficzny z animacją CSS3 na wierzchu
- 16. Dodawanie geometrii do siatki three.js po renderowaniu
- 17. Three.js - zrobić animację rotacji?
- 18. Dodaj tekst na wierzchu pomijanego na klawiaturze barplota, używając ggplot2
- 19. Dlaczego metoda "geometria()" działa z opóźnieniem?
- 20. Niestandardowa geometria iOS w programie SceneKit
- 21. Najlepsze opcje animacji w THREE.JS
- 22. Jak ustawić limity na OrbitControl - Three.js
- 23. Three.js: sposób na zmianę osi w górę?
- 24. Ustawianie okna XAML zawsze na wierzchu (ale bez właściwości TopMost)
- 25. Ustawianie JPanel zawarte w JDesktopPane jak zawsze na wierzchu
- 26. Utrzymując element nagłówka zawsze na wierzchu podczas przewijania?
- 27. CardView znajduje się na wierzchu FrameLayout, ale najpierw został zadeklarowany
- 28. Scala oświadczenie import na wierzchu i wewnątrz klasy scala
- 29. Jak utworzyć formularz zawsze na wierzchu w aplikacji
- 30. ImageView - narysuj półprzezroczysty kolor na wierzchu, aby uzyskać stan skupienia?
Czy to jedyny sposób? Próbowałem osiągnąć ten sam efekt za pomocą mesh.renderDepth, material.depthTest i material.depthWrite, ale bezskutecznie. – Andrew
@Andrew Proszę napisać, jeśli masz pytanie. – WestLangley
@Andrew próbuje zrobić to samo teraz, patrząc na http://stackoverflow.com/questions/16247280/force-a-sprite-object-to-always-be-in-front-of-skydome-object-in -three-js – sixFingers