我正在尝试将在Cheetah 3D和Blender 3D中创建的动画加载到Scene Kit中,但我得到的是一堆"无标题动画",每个动画都是相同的动画.
有谁知道如何从Blender或Cheetah 3D正确导出这些,以便Scene Kit可以使用它们?
我可以使用COLLADA/.dae格式导出在Blender中创建的网格,以便在SceneKit中使用 - 但iOS设备上不显示任何纹理.
此外,OS X上的预览不会打开从Blender导出的任何COLLADA文件 - 但是侧边栏预览会显示网格.出口使这项工作需要哪些选项?
I have some problems animating a loaded COLLADA Model. I've written my own parser and now I also want to write my own draw routine as well. The problem ist, that as soon as I enable the animation on my model, the hands, legs and the head is stretched away from the origin of the model. (The loader is implemented based on the tutorial here: COLLADA Tutorial)
The first thing I do in my draw function of the model …
我通过动画将模型从Blender输出到Collada.众所周知,Blender是一个右手系统,所以它的上轴是z,而OpenGL ES2是Y-Up.
对于静态网格物体,我可以围绕x轴旋转对象90度,但是当我将旋转应用于帧的矩阵时,它会产生意外结果.
那我该怎么做呢?
我正在试图弄清楚如何将.dae带动画的文件导入Xcode和SceneKit.
它有点工作,但它真的很麻烦,我无法预览文件,Xcode有时会在尝试预览.daeXcode中的文件时崩溃.
.dae文件,然后在Xcode文件列表中选择该文件进行预览.结果如下所示.我已经完全缩放以确保我不仅仅是从网格内部查看模型.线条看起来像infinetly延伸.<animation>带有相应结束标记的标记,然后将其导入Xcode,它将根本不会打开.见下图..dae文件版本未使用ConvertToXcodeCollada转换,并且添加.dae文件作为.scn场景文件中的子参考,则模型会正确显示,并且动画正在播放.图片如下.我还尝试将动画模型导入Blender,然后从那里将其导出到Collada(youtube上的教程中的非结构),以及相同的结果.有没有办法我能以正确的方式做到这一点,它的工作方式应该如此,没有Xcode表现出错误?如果我能.dae直接预览和编辑文件的材料等会更容易,而不必总是将它们添加到现有的.scnScene Kit场景中.
更新:由于没有研究足够的SketchUp GUI,看起来是我自己的错.看看我自己的答案.
嗨,
我打算在我的地图软件中实现"导出到COLLADA"功能,但是由于缺少一个好的COLLADA文件查看器而受到阻碍.我尝试了几个应用程序:
我会感激任何提示,但我正在寻找第一手经验,而不仅仅是谷歌搜索(我自己也尝试过).我意识到这不是一个典型的编程问题,但我认为在StackExchange上没有更好的地方来问这个问题.
我最近在官方网站上使用了我的collada对象(.dae)获得了三个例子ColladaLoader.js.现在我的问题是,如何更改加载的collada对象颜色属性并添加自定义纹理?我尝试添加纹理没有运气.
这是我的代码(与原始示例略有不同):
function load_model(el) {
if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
var container, stats;
var camera, scene, renderer, objects;
var particleLight, pointLight;
var dae, skin;
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load( '/site_media/models/model.dae', function ( collada ) {
dae = collada.scene;
skin = collada.skins[ 0 ];
dae.scale.x = dae.scale.y = dae.scale.z = 0.90;
dae.updateMatrix();
init(el);
animate();
} );
function init(el) {
container = document.createElement( 'div' );
el.append( container );
camera = new THREE.PerspectiveCamera( 45, window.innerWidth / …Run Code Online (Sandbox Code Playgroud) 哪些层有助于有效实现这一目标?优选地,这样我能够将下面列出的这三个组件与早期层一起使用,并且在我去的时候对其余组件进行编码.
我正在编写一个COLLADA加载库,用于我的图形引擎.所以当然我一开始就注意到这似乎是一项相当大的任务.我现在打算编写库来使用不同的层.
我不还明白COLLADA.我假设可能有:
即使这些我不确定,也可能需要成为不同类型的分层方案的一部分.
我已经通过ColladaLoader成功导入了.dae场景.
问题是,我需要在几个.dae文件之间切换.
我似乎无法正确实现dispose方法.
dae.traverse(function(obj) {
console.log('unloading ' + obj.id);
scene.remove(obj);
if(obj.geometry)
obj.geometry.dispose();
if(obj.material)
obj.material.dispose();
if(obj.mesh)
obj.mesh.dispose();
if(obj.texture)
obj.texture.dispose();
});
scene.remove(dae);
Run Code Online (Sandbox Code Playgroud)
我可能做错了什么?
非常感谢提前!
编辑:
这是整个代码.
var renderer = null;
var scene = null;
var camera = null;
var controls = null;
var dae = null;
//var loader = null;
function init() {
renderer = new THREE.WebGLRenderer( { alpha: 1, antialias: true, clearColor: 0xffffff } );
renderer.setSize( 800, 600 );
var elem = $('.main3d')[0];
elem.appendChild( renderer.domElement );
scene = new THREE.Scene();
camera …Run Code Online (Sandbox Code Playgroud) 似乎大多数3D创作应用程序使用Z作为"向上"轴.而SceneKit使用Y作为'向上'轴.SceneKit允许您将场景加载为Collada .DAE文件.通过以下任一方式加载场景时:
SCNScene(named: String?, inDirectory: String?, options: [NSObject : AnyObject]?)
Run Code Online (Sandbox Code Playgroud)
要么
SCNSceneSource(URL url: NSURL!, options: [NSObject : AnyObject]!)
Run Code Online (Sandbox Code Playgroud)
您可以指定选项,包括SCNSceneSourceConvertToYUpKey和SCNSceneSourceConvertUnitsToMetersKey.
相应地设置这些,我期望当我将它们添加到从加载的场景中的节点构造的我自己的场景中时,各个节点被变换和缩放.但这些选项似乎没有效果.
let myScene = SCNScene(named: "Scene.dae", inDirectory: nil, options: [SCNSceneSourceConvertToYUpKey:true, SCNSceneSourceConvertUnitsToMetersKey:25.4])
Run Code Online (Sandbox Code Playgroud)
我误解了这些选项参数的含义吗?