1)実行ボタンを押します。 2)ネコで書かれたネコ?が時々首を振ります。 3)終わりません。 「光源」についての実験的な実装です。マウスをクリック(押しながら動かすのがおすすめ)すると、何やら光を当てている気分になれます。
usage: Green flag, Hold mouse button and move, That' all. https://scratch.mit.edu/projects/300278945/ の派生です。 「太陽の光っぽいデータ」を加えたら「月面っぽく」なってちょっと面白かったので公開してみました。 むずかしいせつめい。 「(Blenderで原点中心に作ったモデルなら)頂点データは原点(0,0,0)を中心に広がっているんだから、球に近い形状なら頂点ベクトルがそのまま法線の近似として使えるんではないか」 とか、言葉にすると一見それっぽい(けどたぶんとても無茶な)ことを思いついたので、実装してみました。 一般論として法線の計算をしないことがどれくらい意味があるのかは、はなはだ疑問です(Blenderから.objを出力する際に「1頂点=1法線にする」方法がまだ見えてないから仕方なく。とかいう都合もあります)が、 ともあれ、この程度の単純なモデルならそこそこもっともらしい感じで見られるようです。パーツ分けしたので各々はさらに球に近いのでもうちょっと手が入れられそうですが、パーツ単位でのシェーディングには未対応です。 難しそうなこと言ってますが「内積って何?」「正規化って何だっけ」というレベルの数学力なのでそういう話を振られても対応できません。 現状では座標系がまだ混乱してたり、Z-orderは「ファイル中の頂点順」、「透明度によるごまかし」、「パーツの前後関係の決め打ち(例えば耳は一番奥、口は一番手前)」が頼りだったり、正規化する代わりに見た目それっぽいつじつま合わせしていたり」と結構いい加減ですが、処理速度に関しては「8年前のPCで実用的フレームレートで動いている」ので、「この方向には道がありそう」です。頂点単位でのz-orderは根本的に考え方を変えないと速度的に無理そう。 2019/05/21: 一部コスチュームの輪郭線を削除。法線をモデル空間からワールド空間に変更。環境光の最低値を-100に変更。「遠く(=zが小さい)の頂点は見えない」という陰面処理を追加。タイトルから「研究用」を削除。 2019/06/10: ねこあたまモデルを更新し、耳の形状とパーツ分けを変更。 objファイルのoエントリに対応して描画順をコード側で手動で対応。 光源はマウス操作を原則とするように変更。 目、口パーツ位置微調整。目は座標変換と独立して表示角度を変えるように変更。口はやや奥へ移動しデッサンが狂った印象の再現を試みた。 座標変換時にz座標が間違ってた(とんでもない)バグを修正。 光源移動をマウス操作に変更。 2020/03/03: ・注目入りしたのをきっかけに、かんたんな英語説明を追加。 ・ちなみに中央のネコがしゃべっている「にゃにゃーにゃーにゃ、にゃーにゃにゃ?」は、以前作ったプロジェクト( https://scratch.mit.edu/projects/277365941/ )の「座標データちょうだい(Zahyō dēta chōdai=Coordinate data, please?)」に相当するセリフに由来します。日本語で発音するとリズムが同じになります。 2020/03/03 09:25JST: ・コード英語化した版を作りました。バズってる間に宣伝するのも気が引けた(あと埋まってどの道発見できなくなると思われる)のでこっそり公開。 英語として意味を成しているかは全く判断できません。英語以外の言語はありませんごめんなさい。 https://scratch.mit.edu/projects/372802283/ 拡張機能の「翻訳」ブロックを使えばできなくもないと思いますが、現行仕様ではコードが読みにくくなると思うので。