three.js ridimensiona automaticamente l'immagine texture, se non è potenza di due. Nel mio caso sto usando una tela personalizzato come texture, che non è il potere di two.while ridimensionamento rende la trama non appare properly.Is Esiste un modo per disabilitare il ridimensionamento delle immagini in Three.jsCome disabilitare three.js per ridimensionare le immagini in potenza di due?
risposta
tre .js attualmente sta provando a un favore.
Poiché è open source, è possibile leggere il codice sorgente di WebGLRenderer.js e vedere che il metodo setTexture
chiama il metodo (non visibile al pubblico) uploadTexture
.
Quest'ultimo ha questo controllo:
if (textureNeedsPowerOfTwo(texture) && isPowerOfTwo(image) === false){
image = makePowerOfTwo(image);
}
che è abbastanza esplicativo stessa.
Ora potreste chiedervi cosa controlli effettivamente lo textureNeedsPowerOfTwo
. Vediamo.
function textureNeedsPowerOfTwo(texture) {
if (texture.wrapS !== THREE.ClampToEdgeWrapping || texture.wrapT !== THREE.ClampToEdgeWrapping) return true;
if (texture.minFilter !== THREE.NearestFilter && texture.minFilter !== THREE.LinearFilter) return true;
return false;
}
Se si utilizza avvolgendo per la trama coordinata diverso da morsetto o se si utilizza un filtro che non è vicina né lineare la trama viene scalata.
Se siete sorpresi da questo codice vi consiglio caldamente di di dare un'occhiata allo MDN page on using textures.
Citando
La cattura: queste texture [Non potenza di due trame] non può essere utilizzato con mipmapping e non devono "repeat" (piastrelle o in un involucro).
[...]
senza eseguire la configurazione di cui sopra, WebGL richiede che tutti i campioni di NPOT [non potenza di due] texture per fallire restituendo nere: RGBA (0,0,0,1).
Quindi, utilizzando una texture NPOT con parametri della texture non corretti darebbe il buon vecchio solido nero.
Dal Three.js è open source, è possibile modificare la copia locale e rimuovere il controllo "incriminato".
Tuttavia, un approccio migliore, più semplice e più gestibile consiste semplicemente nel ridimensionare la mappatura UV UV. Dopotutto è lì solo per questo caso d'uso.
- 1. Come ridimensionare le immagini in org-mode
- 2. Non è disponibile la potenza di due trame in iOS
- 3. WebGL e la potenza di due dimensioni dell'immagine
- 4. Come ridimensionare le immagini usando il terminale su Mac OSX?
- 5. Ridimensionare le immagini in base alla risoluzione dello schermo Android
- 6. Texture WebGL e rettangolare (potenza di due)
- 7. Ridimensionare le immagini in una nuova cartella utilizzando ImageMagick
- 8. Batch ridimensionare le immagini e le immagini in uscita a nuova cartella con ImageMagick
- 9. Come calcolare le sequenze de Bruijn per alfabeti non di potenza di due dimensioni?
- 10. enumerazioni Flag senza potenza di due valori
- 11. Quale libreria C consente di ridimensionare le immagini ginormous?
- 12. immagini Ridimensionare in UIWebView alla finestra dimensioni
- 13. In CSS, come ridimensionare più immagini sovrapposte in modo reattivo?
- 14. Come interpolare tra due colori usando three.js?
- 15. Unisci due immagini per trascinarle
- 16. Come allungare/ridimensionare le immagini di sfondo in un layout lineare Android?
- 17. Unione di due immagini
- 18. Come ridimensionare l'immagine in Android?
- 19. Come ritagliare e ridimensionare le immagini in un unico passaggio a .NET
- 20. Come confrontare due immagini bordo (in OpenCV)?
- 21. Qual è il modo migliore per ridimensionare le immagini in Java?
- 22. Come ridimensionare le immagini incluse nelle pagine di documentazione di GitHub?
- 23. Come ridimensionare le linguette di materiale-ui
- 24. Come utilizzare Canvas per unire due immagini in Android?
- 25. SDL disegna immagini sfocate senza ridimensionare
- 26. Come posso impedire al browser Android WVGA di ridimensionare le immagini?
- 27. Controllo della potenza di una password (come controllare le condizioni)
- 28. Potenza precedente di 2
- 29. campi varchar: la potenza di altri due è più efficiente?
- 30. Ridimensionamento delle immagini in Java per ridurre le dimensioni dell'immagine
Ben risposto. :) –