3Dオブジェクトを2Dサーフェスにレンダリング(埋め込みシステム)


9

私はある種の組み込みシステムに取り組んでおり、自由な時間にその描画機能をテストしたいと思っています。

問題のシステムは、EasyMX Stellarisボードに接続されたARM Cortex M3マイクロコントローラーです。そして私は小さな320x240 TFTスクリーンを持っています:)

今、私には毎日自由時間があり、回転する立方体を作成したいと思います。ARM用Micro C PROには3D描画機能がないため、ソフトウェアで実行する必要があります。

『DirectX 10を使用した3Dゲームプログラミング入門』という本から、変換の行列代数を知っていますが、DirectXでカメラを正しく設定できると便利です。

2Dオブジェクトを回転させることができると思いますが、3Dオブジェクトをどうやって使うのですか?

どんなアイデアや例でも大歓迎です。私はアドバイスを好みますが。これを理解したいのですが。


@マリンこれまでに何をしましたか?私は同じことを達成しようとしています。skype:andreahmed
Ahmed Saleh

回答:


7

directXカメラは、マトリックス変換のほんの一部であることをご存知ですか?3D座標を2D座標に変更するために、ModelView、Projection、次に各頂点へのビューポートマトリックス変換があります。

標準パイプラインに沿った変換の詳細(DirectXとOpenGLはどちらも同じように機能すると思います)。

次に、現在の頂点の2次元配列の2次元の位置(変換の結果)に基づいて三角形をラスタライズします。これはすぐに複雑になる可能性がありますが、PITテストを使用し、衝突するすべてのピクセルを完全に着色することは、あなたのケースでは十分に単純で効果的でなければなりません。

これを行うもう1つの方法は、レイトレーサーを作成することです。オブジェクトに適用したい変換行列を使用して、光線を単に投影解除します。

しばらくの間、低レベルの要素で遊んでいないので、覚えていないと思いますが、どちらのルートもそれほど難しくありません。ハードウェアパイプラインのしくみを理解し、ソフトウェアに実装するか、レイトレーサーを記述します。

ところでここでグラフィックパイプラインについて知っていることを学びました。


すべての変換は手動でコーディングされているため、OpenGLのプログラム可能なパイプライン参照も役立ちます。
edA-qa mort-ora-y 2012

@クラシック雷。カメラについて:はい、私はそれを理解しています。しかし、私はそれをすべてこのシステムに転送する方法を知りません。これを行うための方程式があるのではないかと思いました。したがって、マトリックス計算を回避します。多分私は質問をあまりうまく書いていませんでした。パイプラインについて:それらは同じです。ありがとう!
Martin Berger

3

3Dハードウェアが利用できなかった時代には、独自の3Dエンジンとポリゴンラスタライザを構築する必要がありました。3DICAは、ソフトウェア3Dエンジンのすべての基本を説明する優れたチュートリアルです。私にとって、画像はFirefoxでは表示されませんが、Internet Explorerでは問題なく機能します。

2.1章と3.1章で十分ですが、チュートリアル全体を読むと多くのことを学ぶことができます。


ワオ。いい従業員。そのページから私が知らないことだけがスプラインの一部だと思います。それを深く掘り下げる時間はありません。今のところ。そのmsellをありがとう。
Martin Berger
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.