ニートが頑張るブログ

ニートが現実逃避するために創作活動など色々とカオスに頑張ってみる
ニートが頑張るブログ TOP  >  Flash作成過程 >  ヱヴァ破公開まで一ヶ月

ヱヴァ破公開まで一ヶ月

ついにあと一ヶ月でヱヴァンゲリヲン新劇場版:破が公開ですね.

もう一回ちゃんとラミエルをフラッシュで動かそうかとか考えて,
ある程度のとこまで作ってみました.
でもやっぱり自分のフラッシュの糞重さに絶望です.



のように疑似3Dではないのでちゃんと遠近感もあるし
面の前後もあります.
だから透明度もちゃんと設定できます.
_alphaが100の時は,
面の裏表を判定するようにすればもっと処理は軽くなると思うけど
やっぱりラミエルは半透明がいいのであきらめました.

今回考えたのは面のテカらせ方です.

普通にやるなら,
面の通る3点ABCから
ベクトル→AB
ベクトル→ACをとる.
→ABと→ACの外積を取って面の法線ベクトルをとる.
その法線ベクトルの成分とかからテカらせ方を考える~

みたいな感じだと思いますが,
それを自分がやろうとすると,自分とCPUが死ぬのでパスです.

今回自分が考えたのは頂点のカメラからの距離だけを使う方法です.

点のカメラからの距離dは,
点の座標をx,y,z,
カメラの傾きのサインコサインをXsin,Xcos,Ysin,Ycosとすると,
d = -y*Xsin + (x*Ysin + z*Ycos)*Xcos;
だけで得られるモノです.

このカメラからの距離の差の絶対値に応じて面をテカらせるやり方です.
面が持っている3点の,カメラからの距離の差の絶対値の合計が小さい=
より面がカメラの方を向いている=
よくテカらせる

という単純だけどムリヤリな論法.

実際問題これで,面が正三角形を描くときに
一番キラリと光ります.

そんな感じで出来る限り軽くするようにしてるんですが
周りに子ラミエルを22個も回転させるともう激重です.

多分続きません.





 


具体的にはこんな感じ↓
面が持っている三点をone,two,threeとします.

teka = (Math.abs(one.d-two.d)+Math.abs(one.d-three.d)+Math.abs(two.d-three.d)+50)/500;// テカり具合変数
r = 20/teka;// 赤色成分
g = 40/teka;// 緑色成分
b = 120/teka;// 青色成分

if(r>255){r=255;}
if(g>255){g=255;}
if(b>255){b=255;}

c = (r << 16) | (g << 8) | (b);// rgb合成

clear();
beginFill (c, _root.toumeido );// 透明度に応じて塗る
moveTo ( one._x, one._y);
lineTo ( two._x, two._y);
lineTo ( three._x, three._y);
endFill();


どうなんだろ.

関連記事
[ 2009/05/27 18:47 ] Flash作成過程 | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

月別カレンダー
07 ≪│2017/08│≫ 09
- - 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 - -