Saudações,
neste trecho de código, podemos evitar definir d.crossOrigin quando estamos lidando com um url de dados?
THREE.ImageUtils = {crossOrigin: "",loadTexture: function(a, b, c) {
var d = new Image, e = new THREE.Texture(d, b);
d.onload = function() {
e.needsUpdate = !0;
c && c(this)
};
d.crossOrigin = this.crossOrigin;
d.src = a;
return e
Você pode adicionar um cheque como este:
if( a.substr(0,4) != "data" )
d.crossOrigin = this.crossOrigin;
isso faz o truque. Caso contrário, o Chrome 17 lança um carregamento de imagem de origem cruzada negado pela política de compartilhamento de recursos de origem cruzada para um url de dados.
T.
Hmm ... Acho que você não deve usar ImageUtils.loadTexture nesse caso. Basta fazer isso:
var image = document.createElement( 'img' );
image.src = dataurl;
var texture = new THREE.Texture( image );
texture.needsUpdate = true;
Funciona perfeitamente, obrigado!
@mrdoob , obrigado pelo exemplo acima!
Comentários muito úteis
Hmm ... Acho que você não deve usar ImageUtils.loadTexture nesse caso. Basta fazer isso: