internal override void AbcSetup(aiObject abcObj, aiSchema abcSchema) { base.AbcSetup(abcObj, abcSchema); m_abcSchema = (aiPolyMesh)abcSchema; m_abcSchema.GetSummary(ref m_summary); }
internal override void AbcSetup(aiObject abcObj, aiSchema abcSchema) { base.AbcSetup(abcObj, abcSchema); m_abcSchema = (aiCamera)abcSchema; m_camera = GetOrAddCamera(); // flip forward direction (camera in Alembic has inverted forward direction) abcTreeNode.gameObject.transform.localEulerAngles = new Vector3(0, 180, 0); }
internal override void AbcSetup(aiObject abcObj, aiSchema abcSchema) { base.AbcSetup(abcObj, abcSchema); m_abcSchema = (aiXform)abcSchema; }
static void ImportEnumerator(aiObject obj, IntPtr userData) { var ic = GCHandle.FromIntPtr(userData).Target as ImportContext; Transform parent = ic.parent; string childName = aiGetName(obj); var trans = parent.FindChild(childName); if (trans == null) { if (!ic.createMissingNodes) { ic.objectsToDelete.Add(obj); return; } GameObject go = new GameObject(); go.name = childName; trans = go.GetComponent <Transform>(); trans.parent = parent; trans.localPosition = Vector3.zero; trans.localEulerAngles = Vector3.zero; trans.localScale = Vector3.one; } AlembicElement elem = null; aiSchema schema = default(aiSchema); if (aiGetXForm(obj)) { elem = GetOrAddComponent <AlembicXForm>(trans.gameObject); schema = aiGetXForm(obj); } else if (aiGetPolyMesh(obj)) { elem = GetOrAddComponent <AlembicMesh>(trans.gameObject); schema = aiGetPolyMesh(obj); } else if (aiGetCamera(obj)) { elem = GetOrAddComponent <AlembicCamera>(trans.gameObject); schema = aiGetCamera(obj); } else if (aiGetPoints(obj)) { elem = GetOrAddComponent <AlembicPoints>(trans.gameObject); schema = aiGetPoints(obj); } if (elem) { elem.AbcSetup(ic.abcStream, obj, schema); aiSchemaUpdateSample(schema, ref ic.ss); elem.AbcUpdate(); ic.abcStream.AbcAddElement(elem); } ic.parent = trans; aiEnumerateChild(obj, ImportEnumerator, userData); ic.parent = parent; }
[DllImport("AlembicImporter")] public static extern aiProperty aiSchemaGetPropertyByIndex(aiSchema schema, int i);
[DllImport("AlembicImporter")] public static extern aiProperty aiSchemaGetPropertyByName(aiSchema schema, string name);
[DllImport("AlembicImporter")] public static extern int aiPointsGetPeakVertexCount(aiSchema schema);
[DllImport("AlembicImporter")] public static extern int aiSchemaGetNumProperties(aiSchema schema);
[DllImport("AlembicImporter")] public static extern void aiPolyMeshGetSummary(aiSchema schema, ref aiMeshSummary summary);
[DllImport("AlembicImporter")] public static extern aiSample aiSchemaGetSample(aiSchema schema, ref aiSampleSelector ss);
[DllImport("AlembicImporter")] public static extern void aiSchemaSetConfigCallback(aiSchema schema, aiConfigCallback cb, IntPtr arg);
internal virtual void AbcSetup(aiObject abcObj, aiSchema abcSchema) { m_abcObj = abcObj; }
void ImportCallback(aiObject obj) { var ic = m_importContext; AlembicTreeNode treeNode = ic.alembicTreeNode; AlembicTreeNode childTreeNode = null; aiSchema schema = obj.AsXform(); if (!schema) { schema = obj.AsPolyMesh(); } if (!schema) { schema = obj.AsCamera(); } if (!schema) { schema = obj.AsPoints(); } if (schema) { // Get child. create if needed and allowed. string childName = obj.name; // Find targetted child GameObj GameObject childGO = null; var childTransf = treeNode.gameObject == null ? null : treeNode.gameObject.transform.Find(childName); if (childTransf == null) { if (!ic.createMissingNodes) { obj.SetEnabled(false); return; } else { obj.SetEnabled(true); } childGO = new GameObject { name = childName }; childGO.GetComponent <Transform>().SetParent(treeNode.gameObject.transform, false); } else { childGO = childTransf.gameObject; } childTreeNode = new AlembicTreeNode() { stream = this, gameObject = childGO }; treeNode.Children.Add(childTreeNode); // Update AlembicElement elem = null; if (obj.AsXform() && m_streamDesc.Settings.ImportXform) { elem = childTreeNode.GetOrAddAlembicObj <AlembicXform>(); } else if (obj.AsCamera() && m_streamDesc.Settings.ImportCameras) { elem = childTreeNode.GetOrAddAlembicObj <AlembicCamera>(); } else if (obj.AsPolyMesh() && m_streamDesc.Settings.ImportMeshes) { elem = childTreeNode.GetOrAddAlembicObj <AlembicMesh>(); } else if (obj.AsPoints() && m_streamDesc.Settings.ImportPoints) { elem = childTreeNode.GetOrAddAlembicObj <AlembicPoints>(); } if (elem != null) { elem.AbcSetup(obj, schema); elem.AbcPrepareSample(); schema.UpdateSample(ref ic.ss); elem.AbcSyncDataBegin(); elem.AbcSyncDataEnd(); } } else { obj.SetEnabled(false); } ic.alembicTreeNode = childTreeNode; obj.EachChild(ImportCallback); ic.alembicTreeNode = treeNode; }