我在“自制”GL 坐标系中有旋转矩阵,并希望将它们应用于 collada 坐标系。
我知道我需要一个矩阵来乘以 GL 旋转以将它们转换为 collada 坐标系(其中 Z 实际上是 UP)。坐标系如下图所示:
我需要从左系统到右系统的转换..为了更多的理解:
ColladaMatrix=GLRotMatrix*NeededMatrix
有人知道我需要的矩阵吗?
我正在使用 Collada 加载器在 Three.js r65 中加载我的 3D 对象。在加载回调中,我使用以下代码立即将纹理应用于模型的所有部分。
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load('obj/cdg/Grenada-test1.dae', function(collada) {
var texture = new THREE.ImageUtils.loadTexture("../models/textures/Gr1 08869 Bready Grey.jpg");
var material = new THREE.MeshPhongMaterial({map: texture, tranparent: true});
for (var i = 0; i < collada.scene.children.length; i++) {
collada.scene.children[i].material = material;
}
});
Run Code Online (Sandbox Code Playgroud)
在 Three.js 中它看起来像这样(纹理在某些位置被拉伸)。
该对象在应用了纹理的 Unity 3D 中显示良好,请参见下图。
我尝试过的:
有人知道这里发生了什么以及我如何解决这个奇怪的纹理问题吗?
提前致谢!
编辑:
这是它的样子 texture.repeat.set( 2, 2 )
这是看起来像 texture.repeat.set( 10, 10 …
我正在尝试使用以下代码将 .dae 文件加载到 SCNScene 中:
let solutionScene = SCNScene(named: "art.scnassets/level1.dae")
print(solutionScene?.rootNode) // prints nil
solutionNode = solutionScene?.rootNode.childNode(withName: "level1", recursively: true)
Run Code Online (Sandbox Code Playgroud)
我使用默认设置从 Blender 导出 .dae 文件作为 COLLADA,只包含一个简单的对象。
当我在 XCode 的 art.scnassets 文件夹中单击 .dae 文件时,它打开没有问题,我可以看到几何图形、相机等。
我只是无法在 SCNScene 中加载它。我在 Blender 方面或 Xcode/Swift 方面有什么遗漏吗?
我已经看过很多关于如何用Java读取XML文件的例子.但它们只显示简单的XML文件.例如,它们展示了如何从XML文件中提取名字和姓氏.但是,我需要从collada XML文件中提取数据.像这样:
<library_visual_scenes>
<visual_scene id="ID1">
<node name="SketchUp">
<instance_geometry url="#ID2">
<bind_material>
<technique_common>
<instance_material symbol="Material2" target="#ID3">
<bind_vertex_input semantic="UVSET0" input_semantic="TEXCOORD" input_set="0" />
</instance_material>
</technique_common>
</bind_material>
</instance_geometry>
</node>
</visual_scene>
</library_visual_scenes>
Run Code Online (Sandbox Code Playgroud)
这只是collada文件的一小部分.在这里,我需要提取visual_scene的id,然后提取instance_geometry的url并持续instance_material的目标.当然我需要提取更多,但我不明白如何使用它,这是一个开始的地方.
到目前为止我有这个代码:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
}
catch( ParserConfigurationException error ) {
Log.e( "Collada", error.getMessage() ); return;
}
Document document = null;
try {
document = builder.parse( string );
}
catch( IOException error ) {
Log.e( "Collada", error.getMessage() ); return;
}
catch( SAXException error ) …
Run Code Online (Sandbox Code Playgroud) 我正在使用 ColladaLoader 将模型和骨骼动画加载到 Three.js 中,据我所知,它似乎正在执行正确的动作,但由于某种原因,动画速度快得离谱。你如何控制动画的速度?
简短的问题。如何在three.js中找到网格的尺寸?
我有Collada(.dae)文件,我想知道单位(x,y,z)的大小。我已经看到了有关使用的评论geometry.computeBoundingBox()
,但是我仍然不确定如何使用它。
我也知道使用,scale
但我的最终目标是将场景中的对象与实际测量值(mm)进行比较,这样有助于了解对象的确切物理尺寸,以便在必要时进行更改。
欣赏任何智慧的话:^)
什么是Collada场景图?
我可以拍摄一个我从Google 3D仓库下载并以某种方式将其转换为Collada场景图的场景吗?
该过程是否以某种方式分割场景?