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(); }
private void UpdateAsset(CubismAsset asset) { DisposeRenderer(); if (m_asset != null) { m_asset.Dispose(); } m_asset = asset; if (asset == null) { return; } var eye_blink_controller = new CubismEyeBlink(asset.ParameterGroups["EyeBlink"]); asset.StartMotion(MotionType.Effect, eye_blink_controller); TryUpdateRenderer(); }
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); }