web-dev-qa-db-ja.com

.NET用の3Dグラフィックライブラリ

Windows 7 /デスクトップ向けのシンプルな3Dアプリケーションの作り方を学びたいです。つまり、3D空間で動き回る球体、三角形、またはピクセルを意味します。まだそれほど複雑である必要はありません。このために、.NETでC#言語を使用したいと思います(Java/C++が2番目の優先事項です)。

私はこれがインターネットで何度も尋ねられていることを知っていますが、多くの質問は時代遅れであり、多くのAPIは非推奨であり、チュートリアルは古すぎると感じています。

私はXNAを学ぶことを考えていましたが、次のことを学びました Microsoftはこれを開発し、サポートする予定はありません SharpDXも良い方法のように思えましたが、それはWindowsストアと電話アプリ。

インターネットで見ていると、Managed DirectXはまさに私が探していたもの(構文、複雑さ)のように見えましたが、それでもあまりにも非推奨です私が使用する。

シンプルでありながら堅実な3Dアプリケーションを作成するために学ぶべきことを教えてください。

17
Janman

SlimDX を見てください。これは、DirectX(DirectX 11)用のオープンソースの無料の管理ライブラリです。各リリースはDirectXリリースと一致するため、ほとんどの場合、かなり最新です。私はそれを使用しましたが、始めるのは非常に簡単でした。 ここ(スクロールダウン) は、あなたが言及した他の可能性との比較です。

最も簡単な方法は、おそらくWPF 3Dを使用することです。これは保持モードのグラフィックシステムであるため、大きなニーズ(つまり、エフェクト用の特別なシェーダーなど)がなければ、セットアップと使用は非常に簡単です。

それ以外の場合は、XNAなどのより複雑な3Dシステムがより適切な場合があります。これにより、セットアップに手間がかかりますが、より多くの制御が可能になります。

  1. チュートリアル1:画面に3Dモデルを表示する
  2. [〜#〜] wpf [〜#〜]
  3. [〜#〜] xna [〜#〜]
5
zandi

OpenGLの世界では、 OpenTK を使用しています。既存のコードの上にC#を使用して構築し、シェーディングや現実的な効果なしに平らな幾何学的オブジェクトを表示する必要がありました。

次に例を示します。

render

コードから生成:

void InitModels()
{
    Scene.CoordinateSystem cs1 = new Scene.CoordinateSystem(world.Ground)
    {
        DrawSize = 1,
        Visible = false
    };
    Scene.CoordinateSystem cs2 = new Scene.CoordinateSystem(world.Ground, 0.6 * vec3.J)
    {
        DrawSize = 0.5,
        Orientation = rot3.RotateXDegrees(-15)
    };
    Scene.Cube cube = new Scene.Cube(cs1)
    {
        CubeSize = 0.5
    };
    cs2.AddPoint(new point3(vec3.O,1), Color.Firebrick, 15);
    var line = cs2.AddLine(new line3(-vec3.I, vec3.I), 20, Color.SlateGray, 2);
    line.SetPattern(0xFF0F, GeometryTest.Scene.Stripple.Scale2);

    cube.BindTexture(5, GeometryTest.Properties.Resources.Julia, true);
    cube.AddText(3, "OpenTK 1.0", Color.DarkMagenta, 0.5f, 0.5f, 1.0f);

}
4
ja72