11

小惑星のクローンを (C で) 作成する ベクトル ベースのエンティティに恋をしてしまいましたが、単純に x、y ポイント配列としてコーディングしました。Asteroids のようなものではそれで問題ありませんが、より複雑な 2D モデルを作成したい場合はどうすればよいでしょうか?

Open GL で使用する C/C++ プログラムに 3D モデルをインポートするための十分なチュートリアルとヘルプだけでなく、そこには非常に多くの 3D モデリング ソフトウェアがあることに注意してください。

しかし、私は 3D よりも 2D のベクター ベースのモデルを作成することに興味があります。まだしばらく 2D ゲームを試してみたいと思っているからです。2Dモデリングのような概念は存在しますか? 2D モデルを作成およびエクスポートするためのツールと 2D モデルをインポートするためのライブラリはありますか、または 3D ソフトウェアでフラット モデルを作成し、それらのファイル (.3ds、.ms3d など) をインポートして、それらを z 軸上にフラットに配置しますか?

これまでの私の唯一の考えは、モデリングにInkscapeのようなものを使用し、SVG ファイルを生成し、Cairoを使用してそれらをインポートおよびレンダリングすることでした。それはうまくいきますか、それとも他の推奨事項はありますか?

私はあらゆる種類のモデリングの初心者なので、ばかげた質問をしている可能性があることに注意してください...

4

3 に答える 3

7

自分の答えに賛成票を投じる必要はありませんが、SVG の使用についてもう少し調査しました。私は OpenGL を使用しているので、OpenVGが適しているようです。

  • AmanithVG - ソフトウェアとハ​​ードウェアの両方のレンダリングを備えた、OpenGL 上に構築された OpenVG の商用実装。ダウンロードは評価用にのみ利用可能で、価格はわかりませんが、美しく機能します。
  • ShivaVG - 作者は AmanithVG が商用であることに腹を立てていたので、純粋な ANSI C で独自のオープンソース実装を作成しました。しかし、しばらく更新されていません。SourceForgeで。
  • アンチグレイン ジオメトリ- これについてはよくわかりません。SVG のサポートはあると思いますが、ソフトウェア レンダリングのみだと思います。
  • librsvg - SVG をレンダリングするための主要なバックエンドとして Cairo を使用します。いいね。

librsvg を除くすべては、実際に SVG ファイルの読み込みを許可するまでには至らないようです。そのため、SVG を適切な OpenVG 構造に解析する別のステップが必要になると思われます (ほとんどの場合、大きな float 配列のように見えるため、それほど難しくありません)。同様に、SVG から OpenVG への項目の 1 対 1 のマッピングがあるようで、これは有望です。私が知る限り、OpenVG はほとんど SVG 用に作られています。

私はおそらくShivaVGを使用します。完璧ではないかもしれませんが、トラを描いています。私は純粋な C / OpenGL の実装が大好きで、これほど複雑なことをまだやろうとは思っていません。

于 2010-01-17T02:38:51.527 に答える
6

2D ベクトル ゲーム プログラミングに関する限り、通常は Flash と Flex の領域です。

それでもSVGとカイロ経由でのロードは実行可能な解決策のようです。ハードウェアアクセラレーションが有効になっていることを確認するように注意しますが(できればOpenGLバックエンド)。

2D 形式に関する限り、どの形式でも SVG ほど適切なサポートは得られないため、私はそのまま使用します。技術的には、Collada や X3D などは 2D グラフィックスをサポートしていますが、実際には (2D プログラマーにとって) 役に立たない肥大化がたくさんあります。

于 2010-01-16T23:36:46.057 に答える
3

SVG は 2D への道です :)

描画速度が問題になる場合は、ファイルの複雑さに注意する必要があります。また、SVG は解析速度についても最適化されていないため、読み込み中に起動時間が大幅に長くなる可能性があることに注意してください。あなたのモデル。

于 2010-01-16T23:40:47.060 に答える