コード例 #1
0
ファイル: FBXMaterialPtr.cs プロジェクト: yuen33/FBXImporter
    public FBXMaterial __deref__()
    {
        global::System.IntPtr cPtr = FBXImporterUnmanagedPINVOKE.FBXMaterialPtr___deref__(swigCPtr);
        FBXMaterial           ret  = (cPtr == global::System.IntPtr.Zero) ? null : new FBXMaterial(cPtr, false);

        return(ret);
    }
コード例 #2
0
    void SetMaterial(GameObject goNode)
    {
        Renderer rend = goNode.GetComponent<Renderer>();
        SkinnedMeshRenderer skinRend = goNode.GetComponent<SkinnedMeshRenderer>();
        if (rend != null || skinRend != null)
        {
            int iMaterialCount = FBXImporterGetMaterialCount(goNode.name);
            Material[] mats = new Material[iMaterialCount];
            for (int i = 0; i < iMaterialCount; i++)
            {
                IntPtr pFBXMaterial = FBXImporterGetMaterial(goNode.name, i, bInputTextureFullPath);
                if (pFBXMaterial != IntPtr.Zero)
                {
                    FBXMaterial sFBXMaterial = new FBXMaterial();

                    IntPtr pFBXNodeMaterial = Marshal.AllocHGlobal(Marshal.SizeOf(sFBXMaterial));
                    try
                    {
                        sFBXMaterial = (FBXMaterial)Marshal.PtrToStructure(pFBXMaterial, typeof(FBXMaterial));
                    }
                    finally
                    {
                        Marshal.FreeHGlobal(pFBXNodeMaterial);
                    }

                    float[] fDiffuse = new float[3];
                    fDiffuse[0] = 0.0f;
                    fDiffuse[1] = 0.0f;
                    fDiffuse[2] = 0.0f;
                    Marshal.Copy(sFBXMaterial.fDiffuse, fDiffuse, 0, 3);

                    float[] fTransparency = new float[1];
                    fTransparency[0] = 0.0f;
                    Marshal.Copy(sFBXMaterial.fTransparency, fTransparency, 0, 1);

                    mats[i] = new Material(Shader.Find("Standard"));
                    mats[i].color = new Color(fDiffuse[0], fDiffuse[1], fDiffuse[2], 1.0f - fTransparency[0]);

                    string strTextureDiffuseName = Marshal.PtrToStringAnsi(sFBXMaterial.strTextureDiffuseName);

                    // Set Texture
                    SetTexture(mats[i], strTextureDiffuseName);
                }
            }
            if (skinRend != null)
            {
                if (rend != null)
                {
                    Destroy(goNode.GetComponent<MeshFilter>());
                    Destroy(rend);
                }
                skinRend.materials = mats;
            }
            else
            {
                if (rend != null)
                {
                    rend.materials = mats;
                }
            }
        }
    }
コード例 #3
0
ファイル: FBXMaterialPtr.cs プロジェクト: yuen33/FBXImporter
    public FBXMaterial __ref__()
    {
        FBXMaterial ret = new FBXMaterial(FBXImporterUnmanagedPINVOKE.FBXMaterialPtr___ref__(swigCPtr), false);

        return(ret);
    }
コード例 #4
0
ファイル: FBXMaterialPtr.cs プロジェクト: yuen33/FBXImporter
 public FBXMaterialPtr(FBXMaterial p) : this(FBXImporterUnmanagedPINVOKE.new_FBXMaterialPtr__SWIG_1(FBXMaterial.getCPtr(p)), true)
 {
 }
コード例 #5
0
ファイル: FBXMaterial.cs プロジェクト: wyyayy/FBXImporter
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(FBXMaterial obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
コード例 #6
0
    void SetMaterial(GameObject goNode)
    {
        Renderer rend = goNode.GetComponent<Renderer>();
        SkinnedMeshRenderer skinRend = goNode.GetComponent<SkinnedMeshRenderer>();
        if (rend != null || skinRend != null)
        {
            int iMaterialCount = FBXImporterGetMaterialCount(goNode.name);
            Material[] mats = new Material[iMaterialCount];
            int k = 0;
            for (int i = 0; i < iMaterialCount; i++)
            {
                IntPtr pFBXMaterial = FBXImporterGetMaterial(goNode.name, i, bInputTextureFullPath);
                if (pFBXMaterial != IntPtr.Zero)
                {
                    FBXMaterial sFBXMaterial = new FBXMaterial();
                    IntPtr pFBXMaterialT = Marshal.AllocHGlobal(Marshal.SizeOf(sFBXMaterial));
                    try
                    {
                        sFBXMaterial = (FBXMaterial)Marshal.PtrToStructure(pFBXMaterial, typeof(FBXMaterial));
                    }
                    finally
                    {
                        Marshal.FreeHGlobal(pFBXMaterialT);
                    }

                    if (Marshal.PtrToStringAnsi(sFBXMaterial.strMaterialName).ToString() == "CgfxShader")
                    {
                        /*
                        string strCgfxTexturTypes = "";
                        string strCgfxTextureNames = "";
                        if (sFBXMaterial.strCgfxTextureTypes != null)
                        {
                            strCgfxTexturTypes = Marshal.PtrToStringAnsi(sFBXMaterial.strCgfxTextureTypes);
                        }
                        if (sFBXMaterial.strCgfxTextureNames != null)
                        {
                            strCgfxTextureNames = Marshal.PtrToStringAnsi(sFBXMaterial.strCgfxTextureNames);
                        }
                        */
                        continue;
                    }
                    else
                    {
                        float[] fDiffuse = new float[3];
                        fDiffuse[0] = 0.0f;
                        fDiffuse[1] = 0.0f;
                        fDiffuse[2] = 0.0f;
                        Marshal.Copy(sFBXMaterial.fDiffuse, fDiffuse, 0, 3);

                        float[] fTransparency = new float[1];
                        fTransparency[0] = 0.0f;
                        Marshal.Copy(sFBXMaterial.fTransparency, fTransparency, 0, 1);

                        mats[k] = new Material(Shader.Find("Standard"));
                        mats[k].color = new Color(fDiffuse[0], fDiffuse[1], fDiffuse[2], 1.0f - fTransparency[0]);

                        string strTextureDiffuseName = Marshal.PtrToStringAnsi(sFBXMaterial.strTextureDiffuseName);

                        // Set Texture (Shader: Off)
                        SetTexture(mats[k], "", strTextureDiffuseName, false);
                    }
                }
                k++;
            }
            if (skinRend != null)
            {
                if (rend != null)
                {
                    Destroy(goNode.GetComponent<MeshFilter>());
                    Destroy(rend);
                }
                if (k > 1)
                {
                    skinRend.materials = mats;
                }
                else
                {
                    skinRend.material = mats[0];
                }

            }
            else
            {
                if (rend != null)
                {
                    if (k > 1)
                    {
                        rend.materials = mats;
                    }
                    else
                    {
                        rend.material = mats[0];
                    }
                }
            }
        }
    }
コード例 #7
0
    void SetMaterial(GameObject goNode)
    {
        Renderer            rend     = goNode.GetComponent <Renderer>();
        SkinnedMeshRenderer skinRend = goNode.GetComponent <SkinnedMeshRenderer>();

        if (rend != null || skinRend != null)
        {
            int        iMaterialCount = FBXImporterGetMaterialCount(goNode.name);
            Material[] mats           = new Material[iMaterialCount];
            for (int i = 0; i < iMaterialCount; i++)
            {
                IntPtr pFBXMaterial = FBXImporterGetMaterial(goNode.name, i, bInputTextureFullPath);
                if (pFBXMaterial != IntPtr.Zero)
                {
                    FBXMaterial sFBXMaterial = new FBXMaterial();

                    IntPtr pFBXNodeMaterial = Marshal.AllocHGlobal(Marshal.SizeOf(sFBXMaterial));
                    try
                    {
                        sFBXMaterial = (FBXMaterial)Marshal.PtrToStructure(pFBXMaterial, typeof(FBXMaterial));
                    }
                    finally
                    {
                        Marshal.FreeHGlobal(pFBXNodeMaterial);
                    }

                    float[] fDiffuse = new float[3];
                    fDiffuse[0] = 0.0f;
                    fDiffuse[1] = 0.0f;
                    fDiffuse[2] = 0.0f;
                    Marshal.Copy(sFBXMaterial.fDiffuse, fDiffuse, 0, 3);

                    float[] fTransparency = new float[1];
                    fTransparency[0] = 0.0f;
                    Marshal.Copy(sFBXMaterial.fTransparency, fTransparency, 0, 1);

                    mats[i]       = new Material(Shader.Find("Standard"));
                    mats[i].color = new Color(fDiffuse[0], fDiffuse[1], fDiffuse[2], 1.0f - fTransparency[0]);

                    string strTextureDiffuseName = Marshal.PtrToStringAnsi(sFBXMaterial.strTextureDiffuseName);

                    // Set Texture
                    SetTexture(mats[i], strTextureDiffuseName);
                }
            }
            if (skinRend != null)
            {
                if (rend != null)
                {
                    Destroy(goNode.GetComponent <MeshFilter>());
                    Destroy(rend);
                }
                skinRend.materials = mats;
            }
            else
            {
                if (rend != null)
                {
                    rend.materials = mats;
                }
            }
        }
    }