コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
bはかせ ◆v7J0FkzUCMsK
2023/5/5 20:05
情報交換
finitiについて
プチコン4でscrubzさんが公開しているfinitiですが、ユーザーの中で使っている方をあまり見かけないので、最近触り始めた私の疑問やメモなど残そうと思います。
もし使っている方おられたら書き込んで頂くと嬉しいです

個人的なメモ、考えとかはネタバレ、内容のある情報だけ見せるようにします

コメント

アバター
bはかせ 2023/5/5 20:22 ◆v7J0FkzUCMsK
3d空間の中で2次元キャラが動き回る感じのゲーム(ペーパーマリオ的な)が作りたくて触り始めましたが、グラフィックをアニメーションさせる方法で難儀しています
分かっている表示方法から
1.パーティクルにスプライトを割り当てる
恐らく一番ベーシックな方法。スプライトの情報を取得、編集する命令もあるので、それでグラフィックを変える事が可能だが、カメラの角度に対して反応しない。つまり、どの角度にカメラを持ってきてもスプライトが正面を向いている。あと、光源の影響を受けない。(3dエンジンの良さがかなり消える)
2.スプライトをテクスチャ化して面に割り当てる
これであれば、ポリゴンと同等の扱いになるので角度も変わるし、光源の影響も受ける。
が、1枚のスプライトを割り当てたいとき、2つの専用ファイルを読み込む必要がある。(画像配列とかから直接読み込む仕様は無いようで、テクスチャを使いたければ必ずファイルから読む必要がある)
よって、アニメーションさせたければ各コマ2つのファイルを用意する必要がある。(16コマのアニメーションの場合32のテクスチャファイルが要る)
アバター
bはかせ 2023/5/5 20:33 ◆v7J0FkzUCMsK
例外として、spのレイヤーを3d空間に自由に配置できるので、それを使えばspanimを使うことが可能(光源には対応しなさそう?)
1画面の中の要素をミニマムにするなら、これで何とかなる所がありそう。だが当然レイヤーごと操作しているので、数枚しか利用できない、同じレイヤーの中のspは同一平面上にしか配置できない(前後関係は出せない)などの点があるので、使っても背景とかか
アバター
bはかせ 2023/5/6 20:02 ◆v7J0FkzUCMsK
3dエンジンを本格的に触るのが初めてだけど、このfinitiが恐らくかなりガチ仕様に作られているのでchatgptに質問をしても他のエンジンの仕様から類推していい答えがもらえるな。超ありがたい
アバター
bはかせ 2023/5/7 0:00 ◆v7J0FkzUCMsK
テクスチャデータは元画像がどんなサイズであっても、1枚(三角*2なので正確には2枚)の画像で768*2048分のグラフィックを占有する。(2枚で1ページを使い切る)グラフィックページ1〜3を使うとすると、見た感じ6枚のテクスチャしか同時に読み込めなさそう。
テクスチャ用の画像は全て1コマ64*64に収められるので、それより大きい絵は解像度が低くなるし、長方形のデータは元サイズに戻した時ドットのガタつきがでる。
アバター
bはかせ 2023/5/7 20:58 ◆v7J0FkzUCMsK
パーティクルで光源の処理を再現できた。
(以下、キャラ=パーティクル)
三角形の極小ポリゴン(見えない)をキャラと同じ座標において、カメラの方を向くようにしておく。で、ポリゴンの色情報を取得して、キャラの色に指定する。
動画では、2つの光源(赤、緑)が設置してある。カメラの回転に伴ってキャラも回転し、その角度に従って色が変化している。
(追記)やっぱポリゴンは床に平行な面のほうが自然なので変更した。明かりの下でちゃんと明かりを受けてるぽくなる
アバター
bはかせ 2023/5/7 21:15 ◆v7J0FkzUCMsK
手順をメモ
1. Request_TRI_colors 1 を最初に書く。これで表示されているポリゴンの色が取得できるようになる。
2. モデルデータに、光源を反映させたいパーティクルと三角形のデータを一緒に記述しておく。頂点の間隔を.01とかにしとくと見えなくなる。
3. そのモデルがオブジェクトとしてセットされた直後に、scene_renderを実行、画面に反映させる。
次、retrieve_TRI_colors out 配列、配列の要素数-1を変数に記録しておく。これがアドレスになる。

これ以降は、毎ループretrieve_TRI_colors out 配列→配列[アドレス]で色データが読み出せるので、それをedit_particles でパーティクルの色のとこに指定すればポリゴンとパーティクルの色が連動する。
アバター
bはかせ 2023/5/7 21:23 ◆v7J0FkzUCMsK
正面向ける処理も手間取ったので記録
カメラの角度x,y,zを、pivot_rotateに入力する(ただし、xの引数だけ0を入力)。で、pivot_objectでパーティクルが含まれるオブジェクトを指定するだけ。
制作時、座標軸のどこを下にして制作しているかによって、x,y,zのどれを0にするか変わるのだけど、とりあえず3パターン試せばどこかでカメラの方を向くようになる。はず

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -