已创建的jsc3d 3d对象上的图像添加

时间:2015-06-06 14:56:12

标签: jsc3d

是否可以在已创建的jsc3d 3d对象上添加外部图像或文本。例如,如果任何画布imagedata需要存储在创建的3d对象上,那么它是否可能?

1 个答案:

答案 0 :(得分:0)

是的,它可能。 如果你看一下Texture的jsc3d实现,你会发现纹理已经有了一个底层画布。

假设您有一张名为" myTexture"和一个名为" myMesh"的网格,为了简单起见,你只需要一个固定大小为128x128像素的纹理,这会将你的画布画到网格上:

    var canvas = document.getElementById('myTexture');
    var context = canvas.getContext('2d');
    var dim = 128;
    var imgData = context.getImageData(0,0,dim,dim);
    var data = imgData.data;
    var size = data.length / 4;
    var texture = new JSC3D.Texture;
    texture.data = new Array(size);
    var alpha;
    for(var i=0, j=0; i<size; i++, j+=4) {
        alpha = data[j + 3];
        texture.data[i] = alpha << 24 | data[j] << 16 | data[j+1] << 8 | data[j+2];
        if(alpha < 255)
            texture.hasTransparency = true;
    }
    texture.width = dim;
    texture.height = dim;       

    myMesh.setTexture(texture);
    viewer.update();

.data循环取自JSC3D.Texture.prototype.createFromImage(相信humu2009,jsc3d的创建者)。