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 void KickoffGenerate() { if (!m_IsGenerating) { m_IsGenerating = true; IVoxelVolume volume = GenerateVolume(); var req = VoxelModelGenerationRequest.NewModelRequestSync(volume, m_MaterialResolver, m_ModelSettings); MeshFilter filter = GetComponent <MeshFilter>(); filter.mesh = req.GetMeshOutput(); m_MaterialResolver = null; } }