デザインナイフやヤスリなど一切持たずに今回もキーボードポチポチ叩いてましたw
仕事ネコかわいいw
さてと、まずはこのアシェットは延長でスーパーバルキリーになりそうなのでせっかくですからそのバージョン用のウエイクアップ画像も作っておきました^^
まずは学習型コンピューターのアンギラスの起動画面を変更
次にセンサー系のチェック画面をスーパ-バルキリーの上面に
FCS(武器管制画面)の正面画像に変更しておきました。
以前の薄い状態のバルキリーの画像でも画面一杯でしたが、スーパーになるとボリュームが倍にw
何とか整理して詰め込みました^^
サブモニター部分も調整して、何とかそれなりに
今回はミサイル画面は映画の画面をコピーしてなんちゃって動画で仕上げてみました。
ミサイル爆発後の画面も少し挟みました。フォッカーさんなら超望遠カメラで確認しているでしょうw
目で見るともっとそれっぽく見えるんですがね~^^;
で、問題の発進画面ですが前回の物に続いてこの黄色の枠をくぐって離艦していくというのが結構難しくてかなり悩みましたw
初めはスプライトを使って回転拡大しながら画像を移動させる方法を考えました。
ところが、図形を拡大するとその線も拡大されちゃうんですよね・・・・・当然ですがw
1ピクセルで書かれていた線が近づいてくると2ピクセルの太い線になってしまいますw
かっこ悪すぎww
次に考えたのが図を何枚も用意してなんちゃって動画にする方法
確かにこれなら線の太さは均一に出来ますが何枚描けばいいんだww
1枚描いたところで挫折。
仕方ないので画面上に1枠ずつ30msごとに全部書いていくか・・・・・
これ凄く面倒になるかなと思いましたが、やってみたら超簡単でしたww
傾斜した四角を描くためにそれぞれの頂点を結ぶ線をいちいち計算するのは超面倒・・・・
てなことで傾斜の四角を描くための関数を作成
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 |
//=====================回転四角==================================== void kaiten_shikaku(int x0,int y0,int w,int h,float d,int color){ //(x0,y0)左上角 d反時計回りが+ int x1,y1,x2,y2,x3,y3; x1=x0+w;y1=y0; x2=x0;y2=y0+h; x3=x0+w;y3=y0+h; double d_rad; int kx1,ky1,kx2,ky2,kx3,ky3; d_rad=d*3.14/180;//度数をラジアンに変換 //----------座標計算-------------- kx1=(x1-x0)*cos(-1*d_rad)-(y1-y0)*sin(-1*d_rad)+x0; ky1=(x1-x0)*sin(-1*d_rad)+(y1-y0)*cos(-1*d_rad)+y0; kx2=(x2-x0)*cos(-1*d_rad)-(y2-y0)*sin(-1*d_rad)+x0; ky2=(x2-x0)*sin(-1*d_rad)+(y2-y0)*cos(-1*d_rad)+y0; kx3=(x3-x0)*cos(-1*d_rad)-(y3-y0)*sin(-1*d_rad)+x0; ky3=(x3-x0)*sin(-1*d_rad)+(y3-y0)*cos(-1*d_rad)+y0; lcd.drawLine(x0, y0,kx1,ky1,color); lcd.drawLine(x0, y0,kx2,ky2,color); lcd.drawLine(kx2, ky2,kx3,ky3,color); lcd.drawLine(kx1, ky1,kx3,ky3,color); } |
以前OLEDで傾斜線の関数を作っていたのを基にこのような左上の頂点を回転中心とする傾斜した四角形関数を作成しました。
これだけ三角関数とか有ってもその描画スピードの前では苦になりませんw
何度も言いますが、ESP32+LovyanGFX最強ですw
この関数さえできれば、あとは面倒ですがfor文を50カウントづつに分けて四角形を移動させていけば簡単でしたw
(400迄カウントするfor文の中の一部抜粋です。)
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
if( i<=50){ int k=i; space_take_off.pushRotateZoom(40,28,180, 0.82+i*0.0025, 0.82+i*0.0025,TFT_BLUE); sprite.pushRotateZoom(40,28,0,1,1,transpalette); lcd.drawRect(16-k*16/50,4-k*16/50,48+k*32/50,48+k*32/50,TFT_YELLOW); lcd.drawRect(22-k*6/50,8-k*4/50,36+k*12/50,36+k*12/50,TFT_YELLOW); kaiten_shikaku(17+k*5/50,9-k/50,32+k*4/50,32+k*4/50,13,TFT_YELLOW); kaiten_shikaku(14+k*3/50,10-k/50,24+k*8/50,24+k*8/50,26,TFT_YELLOW); kaiten_shikaku(11+k*3/50,9+k/50,16+k*8/50,16+k*8/50,39,TFT_YELLOW); kaiten_shikaku(8+k*3/50,8+k/50,8+k*8/50,8+k*8/50,55,TFT_YELLOW); } if(i>50 && i<=100){ int k=i-50; space_take_off.pushRotateZoom(40,28,180+k*13/50, 0.82+i*0.0035, 0.82+i*0.0035,TFT_BLUE); sprite.pushRotateZoom(40,28,k*13/50,1,1,transpalette); lcd.drawRect(16-k*16/50,4-k*16/50,48+k*32/50,48+k*32/50,TFT_YELLOW); kaiten_shikaku(22-k*6/50,8-k*4/50,36+k*12/50,36+k*12/50,13-k*13/50,TFT_YELLOW); kaiten_shikaku(17+k*5/50,9-k*1/50,32+k*4/50,32+k*4/50,26-k*13/50,TFT_YELLOW); kaiten_shikaku(14+k*3/50,10+k*1/50,24+k*8/50,24+k*8/50,39-k*13/50,TFT_YELLOW); kaiten_shikaku(11+k*3/50,9+k*1/50,16+k*8/50,16+k*8/50,55-k*14/50,TFT_YELLOW); } if(i>100 && i<=150){ int k=i-100; space_take_off.pushRotateZoom(40+k*3/50,28+k*3/50,193+k*13/50, 0.82+i*0.0035, 0.82+i*0.0035,TFT_BLUE); sprite.pushRotateZoom(40,28,13+k*13/50,1,1,transpalette); lcd.drawRect(16-k*16/50,4-k*16/50,48+k*32/50,48+k*32/50,TFT_YELLOW); kaiten_shikaku(22-k*6/50,8-k*4/50,36+k*12/50,36+k*12/50,13-k*13/50,TFT_YELLOW); kaiten_shikaku(17+k*5/50,9-k*1/50,32+k*4/50,32+k*4/50,26-k*13/50,TFT_YELLOW); kaiten_shikaku(14+k*3/50,10+k*1/50,24+k*8/50,24+k*8/50,39-k*13/50,TFT_YELLOW); } if(i>150 && i<=200){ int k=i-150; space_take_off.pushRotateZoom(43+k*3/50,31+k*3/50,206, 0.82+i*0.0035, 0.82+i*0.0035,TFT_BLUE); sprite.pushRotateZoom(40,28,26,1,1,transpalette); lcd.drawRect(16-k*16/50,4-k*16/50,48+k*32/50,48+k*32/50,TFT_YELLOW); kaiten_shikaku(22-k*6/50,8-k*4/50,36+k*12/50,36+k*12/50,13-k*13/50,TFT_YELLOW); kaiten_shikaku(17+k*5/50,9-k*1/50,32+k*4/50,32+k*4/50,26-k*13/50,TFT_YELLOW); } if(i>200 && i<=250){ int k=i-200; space_take_off.pushRotateZoom(46,34,206, 0.82+i*0.0035, 0.82+i*0.0035,TFT_BLUE); sprite.pushRotateZoom(40,28,26,1,1,transpalette); lcd.drawRect(16-k*16/50,4-k*16/50,48+k*32/50,48+k*32/50,TFT_YELLOW); kaiten_shikaku(22-k*6/50,8-k*4/50,36+k*12/50,36+k*12/50,13-k*13/50,TFT_YELLOW); } if(i>250 && i<=300){ int k=i-250; space_take_off.pushRotateZoom(46,34,206-k*26/50, 0.82+i*0.0035, 0.82+i*0.0035,TFT_BLUE); sprite.pushRotateZoom(40,28,26-k*26/50,1,1,transpalette); lcd.drawRect(16-k*16/50,4-k*16/50,48+k*32/50,48+k*32/50,TFT_YELLOW); } |
こんな感じで6~11行目までのコピペして下から1行づつ消していくだけですw
なんか長い間悩みましたが、出来上がってみたら見た感じ超簡素なプログラミングとなりましたw
とはいっても中央の姿勢表示や背景等が傾いたりスクロールしたり色々とやっているので全体では簡単ではないのですけどねw
これでいいや^^
ちなみにLEDのチェックもしてみたのですが、
光量を調整していないのでコクピットが燃えているww
ここはPWMで調整されます。
とりあえず、これで発進部分は出来上がりましたので、残すはドッグファイト部分・・・・・・
ヒカルさんの物は映画から何となくこんな感じと出来ましたが、フォッカーさんは空白部分ですからね~。さらに当然ヒカルさんよりも動きも激しくて撃墜数も多いでしょうから・・・・・・
どうしよw!超大変そうww!!
てなことでまた少し籠りますので反応悪くなります^^;
関連すると思われる記事:
- None Found
もう完全に常軌を逸してますね!
もうこの分野で追随するものはいないんじゃないでしょうか?
ワイヤーフレーム処理は80’sアーケードゲームを
彷彿とさせる演出でにくいですねぇ~。
あとは曲にあわせてスロットルに乗せた手が
バー二ンハーすれば完璧!!!
てつのさん こんばんは!
いや~なんか色々と思うことが出来るようになってきました^^;
このワイヤーフレームの輪(四角ですがw)くぐりなんて昔のゲームで有りましたよね~。
古い人間なのでカッコいいかなと思いやっちまいましたw
一番面倒かなと思っていた方法が一番簡単に済んでしまいましたw回転する四角の関数作ったらそれに代入するだけでしたww
スロットルの腕は流石にパスwもうこれ以上ギミック入るスペースありませんw
こんばんは
最近は模型製作もだんだんハイテクになってきましたね。もうLチカなんて当たり前、ディスプレイの高度な表示で雰囲気をさらに高めて、次元が違います。
ソフトテクニックが作品のレベルに大きく貢献ですね。
動画は、グラフィック表示と比べるとやや画質が低下しますが、ちょっと離れるとわかりません。やはりこういったテクニックは必要ですね。
四角の枠を通過するシーンは、最高です! プログラミングにご苦労された効果が出ています。やっぱり、ESP32恐るべし、いや、ESP32は勉強すべしですね!
こんにちは
そうか、ひとつずつ消しながらリピートしていってるのか。昔のアニメの同じセルがリピートみたいな感じですね。賢いなぁ。
これ、そのうちキャノピーに投影されるようになるんですよね、いや言わなくてもわかってますってww
パワーのあるCPUもってきたら普通はもてあましそうですが、いかんなくその性能を引き出されてますよね、ほんと!
何モデラーって分類したらいいんでしょうねコレ。
いったいどこに行ってしまうのか、、、
とにかく興味の範囲をすべて広く深く掘り下げてしまうその好奇心とバイタリティには
感服いたします。
日本の宝ですよww
大仕掛けのうっかりは、とんとご無沙汰でさみしい限りw
なおさん こんばんは!
そうなんですよ~。もっと難しい感じかと思っていたのですが、人間の脳ってホントアホですねw
こんな単純なことで納得してしまいます。
実際にプログラム書いたら簡単すぎてちょっと今までの苦労は?と思いましたよw
うほwムチャ振り来たwwプロジェクターは有るのですが、これは大きさと透明な物に投影するという不可能技ですw
CPUのパワーを使い切っているといいますか、使い切らないといけないレベルのプログラムしか組めないのが原因ですww
gyoさん こんばんは!
最近プログラムだけで何も製作物ないですww
あれから、ドッグファイト部分のプログラミング始めたのですが、面倒になって挫折ww
youtubeからゲーム画面をパクってドッグファイト画面になるように画像加工と効果音付けましたwwもうねこれでいいやwなんか飽きてきましたしww
確かに最近はプログラムだけですからあまり大がかかりなウッカリは無いですね~。
でも大丈夫そのうち絶対やりますのでww
Vividさん こんばんは!
なぜかコメントがスパムに分類さえれていて、気づくの遅れて申し訳ありませんでした。
そうなんですよね~
どうにも最近は模型がハイテク化してきてついていけなくなりつつありますw
今回は何とかなりましたが、ほんと何時置いてけぼりになるのか戦々恐々としていますw
動画はやはり画質が落ちますが、このESP32さん結構やってくれますw動画になっている1枚1枚の画像は殆ど画質落としていないんですよ。まっ80x57ピクセルという大きさだから可能なのだとは思いますが^^;
四角枠くぐりとかやってみれば意外と簡単で、むしろそれまでの方法の方が大変で早くやってみればよかったと後悔ですw