XML3D:导出场景
XML3D: Exporting scene
我需要将场景导出为单个 STL 文件。
而导出每个 <asset>/<mesh>/<model>
导出整个场景并进行转换很容易,这是另一个故事。这需要在导出之前对每个资产数据的每个顶点应用世界矩阵变换。
XML3D 有一些机制可以帮助我吗?
我应该从哪里开始?
实际上,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
...
});
我需要将场景导出为单个 STL 文件。
而导出每个 <asset>/<mesh>/<model>
导出整个场景并进行转换很容易,这是另一个故事。这需要在导出之前对每个资产数据的每个顶点应用世界矩阵变换。
XML3D 有一些机制可以帮助我吗?
我应该从哪里开始?
实际上,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
...
});