mirror of
https://github.com/MapMakersAndProgrammers/Alternativa3D.git
synced 2025-10-26 18:09:14 -07:00
FBX Preparing
This commit is contained in:
@@ -44,6 +44,7 @@ package alternativa.engine3d.loaders {
|
||||
var head:String = data.readUTFBytes(5);
|
||||
data.position -= 5;
|
||||
|
||||
// TODO: insert unsupported file format warning or error
|
||||
switch (head) {
|
||||
case "; FBX":
|
||||
fileReader = new ReaderText(data);
|
||||
@@ -80,7 +81,7 @@ package alternativa.engine3d.loaders {
|
||||
}
|
||||
}
|
||||
}
|
||||
trace("parsed: 0 =", fileReader.getDepth());
|
||||
// trace("parsed: 0 =", fileReader.getDepth());
|
||||
|
||||
ids = new IncrementalIDGenerator2();
|
||||
a3d = new A3D2(new Vector.<A3D2AmbientLight>(), new Vector.<A3D2AnimationClip>(),
|
||||
@@ -105,9 +106,10 @@ package alternativa.engine3d.loaders {
|
||||
convertAnimation(animation, heapKeyToName(key), nodeNames);
|
||||
}
|
||||
}
|
||||
|
||||
complete(a3d);
|
||||
trace("converted,", hierarchy.length, "(" + objects.length + ")");
|
||||
// TODO: bound boxes calculation
|
||||
// TODO: animation for skins and joints
|
||||
// trace("converted,", hierarchy.length, "(" + objects.length + ")");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,7 +220,7 @@ package alternativa.engine3d.loaders {
|
||||
node2:KFbxNode):Vector.<A3D2Keyframe> {
|
||||
var nodeProperties:Object = {
|
||||
T:"LclTranslation", R:"LclRotation", S:"LclScaling"
|
||||
}
|
||||
};
|
||||
|
||||
var frames:Vector.<A3D2Keyframe> = new Vector.<A3D2Keyframe>(times.length);
|
||||
|
||||
@@ -228,12 +230,10 @@ package alternativa.engine3d.loaders {
|
||||
var property:Vector.<Number> = node2[nodeProperties[curve.channel]];
|
||||
if (property) {
|
||||
for each (var terminalCurve:KFbxAnimCurveNode in curve.curveNodes) {
|
||||
|
||||
if (terminalCurve.KeyTime.length == 0) {
|
||||
// this does happen for some reason :(
|
||||
continue;
|
||||
}
|
||||
|
||||
var index:int;
|
||||
switch (terminalCurve.channel) {
|
||||
case "X":
|
||||
@@ -262,7 +262,6 @@ package alternativa.engine3d.loaders {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// SDK: The time unit in FBX (KTime) is 1/46186158000 of one second.
|
||||
frames[i] = new A3D2Keyframe(t/4.6186158e10, convertMatrix(node2.calculateNodeTransformation()));
|
||||
}
|
||||
@@ -1147,7 +1146,6 @@ class IncrementalIDGenerator2 {
|
||||
result = this.objects [object] = Long.fromInt(this.lastID);
|
||||
this.lastID++;
|
||||
}
|
||||
;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,16 +20,12 @@ package alternativa.engine3d.loaders.filmbox.versions {
|
||||
parseAmbientLight(reader.getRecordData(), heap);
|
||||
reader.stepOver();
|
||||
break;
|
||||
|
||||
|
||||
// 3D объекты
|
||||
case "Model":
|
||||
data = reader.getRecordData();
|
||||
parseModelRecord(data, stack, heap);
|
||||
reader.stepIn();
|
||||
break;
|
||||
|
||||
|
||||
// разная хрень из Mesh
|
||||
case "Vertices":
|
||||
case "PolygonVertexIndex":
|
||||
@@ -55,8 +51,6 @@ package alternativa.engine3d.loaders.filmbox.versions {
|
||||
addMeshLayerElement(null, stack, new KFbxLayerElementUV, 0);
|
||||
reader.stepIn();
|
||||
break;
|
||||
|
||||
|
||||
// поля слоёв
|
||||
case "TextureUV":
|
||||
setPredefinedProperty(reader, stack, "UV");
|
||||
@@ -78,27 +72,23 @@ package alternativa.engine3d.loaders.filmbox.versions {
|
||||
setPredefinedProperty(reader, stack, recordName);
|
||||
reader.stepOver();
|
||||
break;
|
||||
|
||||
case "Material":
|
||||
node = stack [stack.length - 1] as KFbxNode;
|
||||
node.materials.push(object = new KFbxSurfaceMaterial);
|
||||
stack.push(object);
|
||||
reader.stepIn();
|
||||
break;
|
||||
|
||||
case "Texture":
|
||||
node = stack [stack.length - 1] as KFbxNode;
|
||||
node.textures.push(object = new KFbxTexture);
|
||||
stack.push(object);
|
||||
reader.stepIn();
|
||||
break;
|
||||
|
||||
case "Takes":
|
||||
// all nodes were parsed by now
|
||||
buildHierarchy(heap);
|
||||
reader.stepOver();
|
||||
break;
|
||||
|
||||
default:
|
||||
reader.stepOver();
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user