Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }