コード例 #1
0
    public static void CaptureTransform(aeAPI.aeObject abc, Transform trans, bool inherits, bool invertForward)
    {
        aeAPI.aeXFormSampleData data;
        data.inherits = inherits;

        if (invertForward)
        {
            trans.forward = trans.forward * -1.0f;
        }

        if (inherits)
        {
            data.translation = trans.localPosition;
            data.scale       = trans.localScale;
            trans.localRotation.ToAngleAxis(out data.rotationAngle, out data.rotationAxis);
        }
        else
        {
            data.translation = trans.position;
            data.scale       = trans.lossyScale;
            trans.rotation.ToAngleAxis(out data.rotationAngle, out data.rotationAxis);
        }

        if (invertForward)
        {
            trans.forward = trans.forward * -1.0f;
        }
        aeAPI.aeXFormWriteSample(abc, ref data);
    }
コード例 #2
0
 public SkinnedMeshCapturer(SkinnedMeshRenderer target, aeAPI.aeObject abc)
 {
     m_obj         = target.gameObject;
     m_abc         = abc;
     m_target      = target;
     m_mesh_buffer = new MeshBuffer();
 }
コード例 #3
0
 public CameraCapturer(Camera target, aeAPI.aeObject abc)
 {
     m_obj    = target.gameObject;
     m_abc    = abc;
     m_target = target;
     m_params = target.GetComponent <AlembicCameraParams>();
 }
コード例 #4
0
 public TransformCapturer(Transform target, aeAPI.aeObject abc)
 {
     m_obj      = target.gameObject;
     m_abc      = abc;
     m_target   = target;
     m_inherits = inherits;
 }
コード例 #5
0
        public ParticleCapturer(ParticleSystem target, aeAPI.aeObject abc)
        {
            m_obj    = target.gameObject;
            m_abc    = abc;
            m_target = target;

            m_prop_rotatrions = aeAPI.aeNewProperty(m_abc, "rotation", aeAPI.aePropertyType.Float4Array);
        }
コード例 #6
0
    public ParticleCapturer CreateComponentCapturer(ParticleSystem target, aeAPI.aeObject parent)
    {
        if (m_detailedLog)
        {
            Debug.Log("AlembicExporter: new ParticleCapturer(\"" + target.name + "\"");
        }

        var abc = aeAPI.aeNewPoints(parent, target.name);
        var cap = new ParticleCapturer(target, abc);

        m_capturers.Add(cap);
        return(cap);
    }
コード例 #7
0
    public SkinnedMeshCapturer CreateComponentCapturer(SkinnedMeshRenderer target, aeAPI.aeObject parent)
    {
        if (m_detailedLog)
        {
            Debug.Log("AlembicExporter: new SkinnedMeshCapturer(\"" + target.name + "\"");
        }

        var abc = aeAPI.aeNewPolyMesh(parent, target.name);
        var cap = new SkinnedMeshCapturer(target, abc);

        m_capturers.Add(cap);
        return(cap);
    }
コード例 #8
0
    public CameraCapturer CreateComponentCapturer(Camera target, aeAPI.aeObject parent)
    {
        if (m_detailedLog)
        {
            Debug.Log("AlembicExporter: new CameraCapturer(\"" + target.name + "\"");
        }

        var abc = aeAPI.aeNewCamera(parent, target.name);
        var cap = new CameraCapturer(target, abc);

        m_capturers.Add(cap);
        return(cap);
    }
コード例 #9
0
    public TransformCapturer CreateComponentCapturer(Transform target, aeAPI.aeObject parent)
    {
        if (m_detailedLog)
        {
            Debug.Log("AlembicExporter: new TransformCapturer(\"" + target.name + "\"");
        }

        var abc = aeAPI.aeNewXForm(parent, target.name + " (" + target.GetInstanceID().ToString("X8") + ")");
        var cap = new TransformCapturer(target, abc);

        m_capturers.Add(cap);
        return(cap);
    }
コード例 #10
0
    public static void CaptureCamera(aeAPI.aeObject abc, Camera cam, AlembicCameraParams cparams = null)
    {
        var data = aeAPI.aeCameraSampleData.default_value;

        data.nearClippingPlane = cam.nearClipPlane;
        data.farClippingPlane  = cam.farClipPlane;
        data.fieldOfView       = cam.fieldOfView;
        if (cparams != null)
        {
            data.focalLength   = cparams.m_focalLength;
            data.focusDistance = cparams.m_focusDistance;
            data.aperture      = cparams.m_aperture;
            data.aspectRatio   = cparams.GetAspectRatio();
        }
        aeAPI.aeCameraWriteSample(abc, ref data);
    }
コード例 #11
0
    public static void CaptureMesh(aeAPI.aeObject abc, Mesh mesh, MeshBuffer buf)
    {
        buf.indices  = mesh.triangles;
        buf.vertices = mesh.vertices;
        buf.normals  = mesh.normals;
        buf.uvs      = mesh.uv;

        var data = new aeAPI.aePolyMeshSampleData();

        data.indices   = GetArrayPtr(buf.indices);
        data.positions = GetArrayPtr(buf.vertices);
        if (buf.normals != null)
        {
            data.normals = GetArrayPtr(buf.normals);
        }
        if (buf.uvs != null)
        {
            data.uvs = GetArrayPtr(buf.uvs);
        }
        data.vertexCount = buf.vertices.Length;
        data.indexCount  = buf.indices.Length;

        aeAPI.aePolyMeshWriteSample(abc, ref data);
    }
コード例 #12
0
    void SetupComponentCapturer(CaptureNode node, aeAPI.aeObject parent)
    {
        node.transform          = CreateComponentCapturer(node.obj, parent);
        node.transform.inherits = true;

        if (node.componentType == null)
        {
            // do nothing
        }
        else if (node.componentType == typeof(Camera))
        {
            node.transform.invertForward = true;
            node.component = CreateComponentCapturer(node.obj.GetComponent <Camera>(), node.transform.abc);
        }
        else if (node.componentType == typeof(MeshRenderer))
        {
            node.component = CreateComponentCapturer(node.obj.GetComponent <MeshRenderer>(), node.transform.abc);
        }
        else if (node.componentType == typeof(SkinnedMeshRenderer))
        {
            node.component = CreateComponentCapturer(node.obj.GetComponent <SkinnedMeshRenderer>(), node.transform.abc);
        }
        else if (node.componentType == typeof(ParticleSystem))
        {
            node.component = CreateComponentCapturer(node.obj.GetComponent <ParticleSystem>(), node.transform.abc);
        }
        else if (node.componentType == typeof(AlembicCustomComponentCapturer))
        {
            node.component = CreateComponentCapturer(node.obj.GetComponent <AlembicCustomComponentCapturer>(), node.transform.abc);
        }

        foreach (var c in node.children)
        {
            SetupComponentCapturer(c, node.transform.abc);
        }
    }
コード例 #13
0
 public abstract void CreateAbcObject(aeAPI.aeObject parent);
コード例 #14
0
 public override void CreateAbcObject(aeAPI.aeObject parent)
 {
     m_abc = aeAPI.aeNewPoints(parent, gameObject.name);
 }
コード例 #15
0
 public override void CreateAbcObject(aeAPI.aeObject parent)
 {
     m_abc = aeAPI.aeNewPoints(parent, gameObject.name);
 }
コード例 #16
0
    public CustomCapturerHandler CreateComponentCapturer(AlembicCustomComponentCapturer target, aeAPI.aeObject parent)
    {
        if (m_detailedLog)
        {
            Debug.Log("AlembicExporter: new CustomCapturerHandler(\"" + target.name + "\"");
        }

        target.CreateAbcObject(parent);
        var cap = new CustomCapturerHandler(target);

        m_capturers.Add(cap);
        return(cap);
    }