Chcę renderować scenę z dwukrotnie większą rozdzielczością niż moje płótno, a następnie przeskalować ją przed wyświetleniem. Jak mam to zrobić za pomocą trojków?Supertypowe wygładzanie z trójdźwiękiem
Odpowiedz
Oto, jak możesz go rozwiązać: w kodzie inicjującym three.js, gdy tworzysz renderer, zmień go dwukrotnie na wymiary głównego płótna i ustaw go jako renderowany na dodatkowe, ukryte płótno element, który jest dwa razy większy od podstawowego płótna. Wykonaj niezbędną manipulację obrazem na płótnie pomocniczym, a następnie wyświetl wynik na kanwie podstawowym.
To jest moje rozwiązanie. Komentarze źródłowe powinny wyjaśniać, co się dzieje. Setup (startowych):
var renderer;
var composer;
var renderModel;
var effectCopy;
renderer = new THREE.WebGLRenderer({canvas: canvas});
// Disable autoclear, we do this manually in our animation loop.
renderer.autoClear = false;
// Double resolution (twice the size of the canvas)
var sampleRatio = 2;
// This render pass will render the big result.
renderModel = new THREE.RenderPass(scene, camera);
// Shader to copy result from renderModel to the canvas
effectCopy = new THREE.ShaderPass(THREE.CopyShader);
effectCopy.renderToScreen = true;
// The composer will compose a result for the actual drawing canvas.
composer = new THREE.EffectComposer(renderer);
composer.setSize(canvasWidth * sampleRatio, canvasHeight * sampleRatio);
// Add passes to the composer.
composer.addPass(renderModel);
composer.addPass(effectCopy);
Zmień swoje pętla animacji:
// Manually clear you canvas.
renderer.clear();
// Tell the composer to produce an image for us. It will provide our renderer with the result.
composer.render();
Uwaga: EffectComposer, RenderPass, ShaderPass i CopyShader nie są częścią domyślnie Three.js pliku. Musisz dodać je oprócz pliku three.js. W chwili pisania tego tekstu można je znaleźć w projekcie threejs w folderze Przykłady:
/examples/js/postprocessing/EffectComposer.js
/examples/js/postprocessing/RenderPass.js
/examples/js/postprocessing/ShaderPass.js
/examples/js/shaders/CopyShader.js
dla mnie najlepszym sposobem, aby mieć idealny AA z nie zbyt wiele pracy (patrz poniższy kod) PS: Jeśli zwiększasz więcej niż 2, jego początek jest zbyt ostry
renderer = new THREE.WebGLRenderer({antialiasing:true});
renderer.setPixelRatio(window.devicePixelRatio * 1.5);
- 1. Wygładzanie danych z czujnika
- 2. wygładzanie ruchów myszy
- 3. Wygładzanie czcionek w Delphi
- 4. Wygładzanie niskiego oktawy hałas
- 5. Wygładzanie obrazu w R
- 6. Wygładzanie czcionek w Firefoksie
- 7. Wygładzanie krzywych grafiki rdzenia
- 8. Wygładzanie terenu wokół jezior
- 9. Wygładzanie krawędzi obrazu binarnego
- 10. Gaussian Wygładzanie obrazu w pytonie
- 11. Wygładzanie wypełnionych kształtów w libgdx
- 12. Automatyczne wygładzanie PDO podczas pobierania?
- 13. Jak wymusić wygładzanie czcionek JavaFX?
- 14. Wygładzanie krawędzi obrazu w WPF
- 15. Howto wymusić wygładzanie tekstu Java?
- 16. -webkit-wygładzanie czcionki: antyalergiczny odpowiednik w firefoxie?
- 17. QPainter :: rotate wyłącza wygładzanie narysowanego tekstu
- 18. Wyłącz wygładzanie krawędzi w WebGL dla określonej geometrii
- 19. jQuery easing vs przejście CSS3 - Czy istnieje dokładne równoważne wygładzanie?
- 20. Proste wygładzanie krzywej w matplotlib - odpowiednik "gładkiego beziera" gnuplot?
- 21. Jakie kroki są konieczne, aby włączyć wygładzanie krawędzi podczas używania QPaintera na QGLWidget?
- 22. Czy -webkit-wygładzanie czcionek działa tylko w przeglądarkach Mac, a nie w oknach?
- 23. Skala CSS sprite pixel art bez wygładzania obrazu
- 24. Czy istnieje metoda antyaliasingu dla Pythona PIL?
- 25. Android - rysowanie z akceleracją sprzętową i antyaliasingiem powoduje powstawanie artefaktów
- 26. Zmuszanie Ghostscript do używania wygładzania podczas konwersji pliku PDF na PNG?
- 27. dlaczego css przekształcać obracać tworzy tekst brzydki
- 28. Funkcja wygładzania krawędzi SKCropNode
- 29. Jak filtrować/wygładzać z SciPy/Numpy?
- 30. Wydajna metoda narysowania linii z milionami punktów