Exemplo n.º 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);
        }
Exemplo n.º 2
0
    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;
        }
    }