2015-06-11 45 views
0

我需要將場景導出爲單個STL文件。 鑑於其易於導出每個單一的<asset>/<mesh>/<model>導出整個場景與轉換它的另一個故事。這就要求在導出之前將世界矩陣變換應用於每個資產數據的每個頂點。 XML3D有一些機制可以幫助我嗎?XML3D:導出場景

我應該從哪裏開始?

回答

1

實際上,XML3D是一種演示文稿格式,從來沒有被設計爲提取交互式渲染以外的有用內容。但是,由於它是JavaScript,所以您可以以某種方式訪問​​所有內容,顯然,您還可以獲取所需的數據以應用所有轉換,並從場景中創建一個巨大的STL網格。

我可以使用內部場景想象的最簡單方法:

var scene = document.querySelector("xml3d")._configured.adapters["webgl_1"].getScene(); 

// Iterate render objects 
scene.ready.forEach(function(renderObject) { 
    // Get word matrix 
    var worldMatrix = new Float32Array(16); 
    renderObject.getWorldMatrix(worldMatrix); 

    // Get local position data 
    var dataRequest = new Xflow.ComputeRequest(renderObject.drawable.dataNode, ["position"]); 
    var positions = dataRequest.getResult().getOutputData("position").getValue(); 

    console.log(worldMatrix, positions.length); 
    // apply worldmatrix to all positions 
    ... 
}); 
+0

我猜矩陣乘法是值得手工完成,對吧? – Pietrko

+2

您可以找到一個數學函數,它將使用'''XML3D.math.vec3.transformMat4(outVec,inVec,inMat)''中的矩陣轉換矢量。 XML3D.math下的所有函數都使用glmatrix數學類型(基本上只是普通數組)。 – csvurt

+0

如何獲取特定drawable的索引數據? (通過索引數據我指的是定義三角形的三角形的三元組)。 – Pietrko