private MeshSheetFrame GenerateFrame(int frame) { Vector3Int offset = m_FrameStep * frame; IVoxelVolume frameVolume = new VoxelVolumeSubview(m_SourceVolume, offset, m_CellSize); VoxelModelGenerationRequest request = VoxelModelGenerationRequest.NewModelRequestSync(frameVolume, this, m_Settings.ModelSettings); MeshSheetFrame outFrame = new MeshSheetFrame(); outFrame.m_Mesh = request.GetMeshOutput(); int f = frame; if (m_Settings.FlipFrameDirection) { f = m_Settings.FrameCount - frame - 1; } if (m_Settings.FrameDurationOverrides.TryGetValue(f, out float duration)) { outFrame.m_Duration = duration; } else { outFrame.m_Duration = m_Settings.DefaultFrameDuration; } outFrame.m_Duration *= Mathf.Max(0.001f, m_Settings.FrameDurationScale); return(outFrame); }
public MeshSheet GenerateMeshSheet() { MeshSheetFrame[] frames = new MeshSheetFrame[m_Settings.FrameCount]; for (int i = 0; i < frames.Length; ++i) { int f = i; if (m_Settings.FlipFrameDirection) { f = frames.Length - i - 1; } frames[f] = GenerateFrame(i); } MeshSheet sheet = MeshSheet.CreateNew(frames); sheet.PlayMode = m_Settings.PlaybackMode; return(sheet); }