예제 #1
0
        private void OnCreated(object sender, OpenGL.GlControlEventArgs e)
        {
            // モデルをリソースから読み込む
            // 第2引数にファイル名からリソースを読み込む関数を与える
            Asset = new CubismAsset(@"hiyori_free_t06.model3.json", (string file_path) =>
            {
                // リソースは拡張子を持たず、他のピリオドもアンダーバーに変換されるのでそれに応じて文字列を加工する
                // 普通、画像ファイルはBitmapとして読み込まれるが、resxファイルを編集してあるのでbyte[]として読み込まれる
                string file_name     = Path.GetFileNameWithoutExtension(file_path);
                string resource_name = file_name.Replace('.', '_');
                byte[] byte_array    = (byte[])Hiyori.ResourceManager.GetObject(resource_name);
                return(new MemoryStream(byte_array));
            });

            // 自動まばたきを設定する
            // 自動まばたきで設定するパラメータはmodel3.json中にパラメータグループ"EyeBlink"で指定されている
            var eye_blink_controller = new CubismEyeBlink(Asset.ParameterGroups["EyeBlink"]);

            Asset.StartMotion(CubismAsset.MotionType.Effect, eye_blink_controller);

            // OpenGL.Netを使ったレンダラーを作成する
            Renderer         = new CubismOpenGlNetRenderer();
            RenderingManager = new CubismRenderingManager(Renderer, Asset);

            Timer = Stopwatch.StartNew();
        }
예제 #2
0
            public override void ApplyState()
            {
                base.ApplyState();

                asset            = Source.Asset;
                renderingManager = Source.RenderingManager;
            }
예제 #3
0
 private void DisposeRenderer()
 {
     if (m_rendermgr != null)
     {
         m_rendermgr.Dispose();
         m_rendermgr = null;
     }
     if (m_renderer != null)
     {
         m_renderer.Dispose();
         m_renderer = null;
     }
 }
예제 #4
0
        protected override void OnLoad(EventArgs e)
        {
            GL.ClearColor(0.0f, 0.5f, 0.5f, 1.0f);

            Asset = new CubismAsset(@"hiyori_free_t06.model3.json", (string file_path) =>
            {
                string file_name     = Path.GetFileNameWithoutExtension(file_path);
                string resource_name = file_name.Replace('.', '_');
                byte[] byte_array    = (byte[])Hiyori.ResourceManager.GetObject(resource_name);
                return(new MemoryStream(byte_array));
            });

            var eye_blink_controller = new CubismEyeBlink(Asset.ParameterGroups["EyeBlink"]);

            Asset.StartMotion(CubismAsset.MotionType.Effect, eye_blink_controller);

            Renderer         = new CubismOpenTKRenderer();
            RenderingManager = new CubismRenderingManager(Renderer, Asset);

            base.OnLoad(e);
        }
예제 #5
0
        private void TryUpdateRenderer()
        {
            if (m_asset == null)
            {
                return;
            }
            if (m_gl == null)
            {
                return;
            }
            if (m_renderer != null)
            {
                return;
            }

            m_renderer  = new CubismAvaloniaRenderer(m_gl);
            m_rendermgr = new CubismRenderingManager(m_renderer, m_asset);

            // !must be configured so for Avalonia
            m_renderer.UsePremultipliedAlpha = true;
        }