投稿
omusubi▲ omusubi_p
何番煎じ目かな?(ポリゴン
29そうだね
プレイ済み
返信[1]
親投稿
ポリゴンってどうやってやるんですか?
0そうだね
プレイ済み
返信[2]
親投稿
omusubi▲ omusubi_p
> ポリゴンってどうやってやるんですか? 残念ながらプチコン3号には三次元ポリゴンを描画する命令も三次元の座標を計算してくれる命令も無いので、数学とにらめっこしながら全て自前で計算式を書くしかないんだな。とはいえ、それらは既に偉い人が考えた式が出来上がっているから、プチコンの文法に合わせて書き写すだけ(っても、その式を理解するのがまた難しいw 私の場合は、ほぼ教科書通りの丸写しでどこまでいけるかの挑戦ですね。これでは速度は出ないので、プチコン上でゲームなどに組み込む場合には、計算式を簡略化したり既存の命令で代用したりするテクニックが必要です。その辺のテクニカルな情報が知りたい場合は、スミマセン、私はまだ手を付けていないので、他の方を参考にしてください。
0そうだね
プレイ済み
返信[3]
親投稿
けい kei0baisoku
任意の向きのポリゴンにテクスチャを張ってるプログラムは、このコミュでは初めてじゃないかと思います。 出力の2D座標から行列計算とか使って逆算して、テクスチャのグラフィック面の座標を求めてGPSETを繰り返してる感じでしょうか?
0そうだね
プレイ済み
返信[4]
親投稿
InDoor TheInDoor12
おお、すごい。 速度はどのくらい出ますか?
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
私が知る限りではプチコン3号用プログラムではテクスチャマッピング付きのポリゴンは初だと思います。 プチコンmkIIでは最大で6000テクセル/秒くらいだったので立方体でさえ1fpsに満たないという状況で使い物になりませんでしたが、プチコン3号ではNew3DSで動作時には最大20万テクセル/秒くらいの速度が出ます。 それを考えるとそこそこ高速描画ができてそうですね! Ryu6190さんへ 私はポリゴン表示プログラムはプチコンmkIIで作りましたが、そこにポリゴン表示のやり方を書いています。
1そうだね
プレイ済み
返信[6]
親投稿
omusubi▲ omusubi_p
> テクスチャ やり方はまぁ、けいさんの言われる通り、そんな感じですね。 テクスチャだけならばまだ方法もありそうですが、ライティングもピクセル単位で計算などと考えると、ピクセル展開はやむを得ないところです。 単純に数えて画面サイズ分の計算量になるため、非常に重い処理になります。とりあえずピクセルサイズを大きくする対策を施していますが、まだ色補間処理してないので、これが思った以上に汚くなっちゃうんだなあ > 速度はどれくらい出ますか? 仮組み状態の現状では、ピクセルサイズ1x1のライティング込で10秒はかかってしまいます(旧3DS)。内の半分近くがライティングに持っていかれてますけどw なので、移動・回転中はワイヤーフレームで処理してます。 今はほとんどピクセル分の頂点があるのと変わらいレベルなんですが、おちゃめさんのデータに希望を持ちつつ、ちまちま進めております
1そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
ピクセル単位でライティング処理を行っているということは点光源+フォンシェーディングを行っているのでしょうか? それだとプチコン3号では重くなっても仕方がないですね。 テクスチャはGPSETでピクセル単位で描画するしかないのですが、ライティング処理は平行光源+フラットシェーディングにすれば大幅に高速化できます。 この場合だとベクトル演算するのが表示している面の数だけになるのでライティングに必要なベクトル演算は1000倍以上高速になります。 高速なリアルタイム処理を行うならばある程度の割り切りは必要だと思います。非リアルタイムでいいのならばレイトレーシングを行うという方法もあります。
0そうだね
プレイ済み
返信[8]
親投稿
omusubi▲ omusubi_p
そうです、計算コストが高すぎるので厳密なフォン反射モデルではないですが、フォンシェーディングベースですね。キューブだから面法線はフラットです。 それでも、16bitカラーの縞模様になっちゃってるぽいしで、計算コストの割に表示色は微妙な結果なんだよねw
0そうだね
プレイ済み