public static void CaptureMesh( usdi.Mesh usd, ref usdi.MeshData data, MeshBuffer buf, Mesh mesh, MeshCaptureFlags flags) { buf.vertices = flags.points ? mesh.vertices : null; buf.normals = flags.normals ? mesh.normals : null; buf.tangents = flags.tangents ? mesh.tangents : null; buf.indices = flags.indices ? mesh.triangles : null; buf.uvs = flags.uvs ? mesh.uv : null; CaptureMesh(usd, ref data, buf); }
public override void Capture(double t) // called from main thread { base.Capture(t); if (m_target == null) { return; } if (m_captureEveryFrame || m_count == 0) { bool captureBones = m_captureBones && m_count == 0; if (captureBones) { var root = m_exporter.FindNode(m_target.rootBone); if (root != null) { m_buffer.rootBone = root.capturer.primPath; } var bones = m_target.bones; if (bones != null && bones.Length > 0) { m_buffer.bones = new string[bones.Length]; for (int i = 0; i < bones.Length; ++i) { var bone = m_exporter.FindNode(bones[i]); m_buffer.bones[i] = bone.capturer.primPath; } if (m_exporter.m_swapHandedness) { Debug.LogWarning("Swap Handedness export option is enabled. This may cause broken skinning animation."); } } } var flags = new MeshCaptureFlags { points = true, normals = m_captureNormals, tangents = m_captureTangents, uvs = m_captureUVs && (m_count == 0 || m_captureEveryFrameUV), indices = m_count == 0 || m_captureEveryFrameIndices, }; CaptureMesh(usdi.usdiAsMesh(m_usd), ref m_data, m_buffer, m_target, flags, captureBones); } }
public static void CaptureMesh( usdi.Mesh usd, ref usdi.MeshData data, MeshBuffer buf, SkinnedMeshRenderer smr, MeshCaptureFlags flags, bool captureBones) { Cloth cloth = smr.GetComponent <Cloth>(); if (cloth != null) { var mesh = buf.bakedMesh; smr.BakeMesh(mesh); buf.vertices = flags.points ? cloth.vertices : null; buf.normals = flags.normals ? cloth.normals : null; buf.tangents = flags.tangents ? mesh.tangents : null; buf.indices = flags.indices ? mesh.triangles : null; buf.uvs = flags.uvs ? mesh.uv : null; } else if (captureBones && buf.bones != null) { var mesh = smr.sharedMesh; buf.vertices = flags.points ? mesh.vertices : null; buf.normals = flags.normals ? mesh.normals : null; buf.tangents = flags.tangents ? mesh.tangents : null; buf.indices = flags.indices ? mesh.triangles : null; buf.uvs = flags.uvs ? mesh.uv : null; buf.weights = mesh.boneWeights; buf.bindposes = mesh.bindposes; } else { var mesh = buf.bakedMesh; smr.BakeMesh(mesh); buf.vertices = flags.points ? mesh.vertices : null; buf.normals = flags.normals ? mesh.normals : null; buf.tangents = flags.tangents ? mesh.tangents : null; buf.indices = flags.indices ? mesh.triangles : null; buf.uvs = flags.uvs ? mesh.uv : null; } CaptureMesh(usd, ref data, buf); }
public override void Capture(double t) // called from main thread { base.Capture(t); if (m_target == null) { return; } if (m_captureEveryFrame || m_count == 0) { var mesh = m_target.GetComponent <MeshFilter>().sharedMesh; var flags = new MeshCaptureFlags { points = true, normals = m_captureNormals, tangents = m_captureTangents, uvs = m_captureUVs && (m_count == 0 || m_captureEveryFrameUV), indices = m_count == 0 || m_captureEveryFrameIndices, }; CaptureMesh(usdi.usdiAsMesh(m_usd), ref m_data, m_buffer, mesh, flags); } }