太郎日記’79J

「やったろうやないの。」な太郎のblog
技術ネタはタロタローグに任せて、こっちはニュースメインで。
<< August 2018 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
 
RECOMMEND
MySQLによるタフなサイトの作り方
MySQLによるタフなサイトの作り方 (JUGEMレビュー »)
佐藤 真人,桑野 章弘,岡田 達典,大黒 圭祐
MySQLだけでなく、DBサーバやアプリの設計など、あらゆる手段を使ってタフなサイトを作る本である
最新記事
あわせて読みたい
あわせて読みたい
なかのひと
ClusterMaps
CM by JUGEM
スポンサーサイト

一定期間更新がないため広告を表示しています

- | 個別記事 | - | -
LOAD TO NEGI (5):ネギ振り完了

と、言うわけで、俺もようやく初音ミクにネギを振らせる事に成功。
ネギを振らせるためにモデルを分割して、腕+ネギと体の2つをロードしてる。
テクスチャ画像の読み込み量を考えると何たる無駄って感じ。
これは、MetasequoiaMaterialクラスを改造して、画像キャッシュ機能を付けねば。
しかし、みんな色々やってるな。
ミクモデルの作者の人が紹介してるだけでも凄いバラエティだ。

■ネギ!ネギネギ!!


クリックするとネギを振るよ!

俺は後発組なので、ネギを振るだけじゃつまらんと思い、ギミックを3つほど付けてみた。
しかしそのおかげでモデルは重くなるわコードは複雑になるわで大変。
一応、
[Papervision3D]ねぎ振り完了(note.x)
の記述をヒントに、モデルを軽くしたり、バラしたり、meshSortをいじったりしてみた。
あと、MetasequoiaMaterialクラスと、
ついでにMetasequoiaクラスも拡張してる。
それはまたの機会に出します。

しかし、やっぱアレだね。
libspark?に、MetasequoiaMaterial登録しようかな。
むしろその方が楽な気すらしてきた。
登録できるようになる方法もわからんけど。

さて今回は、ミクのモデルを

  1. 右腕+ネギ
に分けて読み込んでみた。
で、ネギ振りアクションには、Tweenerを使ってみた。
モデルやら画像やらを大量に読み込んでるのでたまにロード失敗して
一部が白いままになる。
その時は自己判断でリロードしてくださいお願いします。
あと、重すぎてモデルが段々出来ていくさまがわかる。
全部揃ったらクリックしたり、
20秒ほど放っておいたりしてみて下さい。

■Tweenerでネギを振るアクションを作る

今回のモデルは、初期状態だとネギを持つ腕が水平になるように設定しておいた。
で、その状態から、
  1. 腕を上げる
  2. 腕を下げる
  3. 腕を水平に戻す
の3アクションを行うことで、ネギ振りを実装。
この3アクションを、Tweenerで作ってみた。
//mikuArmが右腕+ネギのモデルデータ
private function negiSwing(times:Number = 1):void {
    if (times > 0) {
        Tweener.addTween(mikuArm , {rotationX:-45 , time:0.2 , transition:"easeInQuint" , 
            onComplete:function():void {
                Tweener.addTween(mikuArm , {rotationX:30 , time:0.3, transition:"easeInCubic" , 
                    onComplete:function():void {
                        if (times == 1) {
                            Tweener.addTween(mikuArm , {rotationX:0 , time:0.15 , transition:"easeInCubic" , 
                                onComplete:function():void {
                                    negiSwing(times - 1);
                                }
                            });
                        }  else {
                            negiSwing(times - 1);
                        }
                    }
                });
            }
        });
    } else {
        var evt:Event = new Event(Miku.NEGI_SWING_COMLETE);
        this.dispatchEvent( evt );
    }
}
こんな感じ。
イベントまで出して、かなり大掛かりです。
30秒で分かるTweener(Library/AS2/Tweener - Spark Wiki - Trac)
を見て作成。
しかし、Tweener.addTweenとか言う名前ついてる割に、
連続登録できないってちょっと不便じゃない?
ていうか、名前負けしてないか?
addTweenを名乗るなら、
Tweener.addTween(mikuArm , {rotationX:-45 , time:0.15 , transition:"eqseInQubic"});
Tweener.addTween(mikuArm , {rotationX:30 , time:0.3, transition:"eqseInQubic"});
Tweener.addTween(mikuArm , {rotationX:0 , time:0.15 , transition:"eqseInQubic"});
これで連続動作するくらいはやって欲しいよ全く。

流れるようなTween(BeInteractive!)
に同じような内容の言及があった。
ただ、
new Tween(target).move(100, 100, '3sec').move(100, 200, '4frame').withScale(120, 120).begin();
だと、今回のようなプロパティ指定が必要なケースには弱そうだ。

スポンサーサイト
- | 個別記事 | - | -
ドミノ・ピザでも食べながら、コメントをどうぞ。
コメントする









 
トラックバック
この記事のトラックバックURL(記事と無関係なトラックバックは削除される可能性があります)
※記事が投稿されてから30分の間、トラックバックを行うことが出来ません。
http://tarotaro.jugem.cc/trackback/1618
 

Copyright (C) 2004 paperboy&co. All Rights Reserved.

Powered by "JUGEM"