3

WPF で Helix ツールキットを使用しており、さまざまな直径のパイプ/チューブを含む 3D イメージを作成しようとしています。基本的に、私は非直線を取り、軸を中心に回転させてチューブを作成しようとしています。実際の回転ではなく、結果のチューブのみを気にします(回転を視覚化しようとしているわけではありません)。

Helix ツールキット、または他の 3D サーフェス生成ツールでこれを行う方法はありますか? 私が思いついた最善の解決策は、直径の異なる一連のパイプを作成することですが、各パイプ間の移行をスムーズにする方法がわかりません。パイプには多くのポイントがあるため、これも理想的なソリューションとは言えません。そのため、最終的に約 150 個の非常に小さなパイプ セグメントが作成されます。Helix のドキュメントはやや不足していますが、ソース コードを調べても明らかな解決策は見つかりませんでした。

4

1 に答える 1

4

MeshBuilder.AddRevolvedGeometry()またはMeshBuilder.AddSurfaceOfRevolution()これを行う必要があります。

コメント付きのソースコードを参照してくださいhereおよびhereと言っています

/// <summary>
/// Adds a surface of revolution
/// </summary>
/// <param name="origin">The origin.</param>
/// <param name="axis">The axis.</param>
/// <param name="section">The points defining the curve to revolve.</param>
/// <param name="sectionIndices">The indices of the line segments of the section.</param>
/// <param name="thetaDiv">The number of divisions.</param>
/// <param name="textureValues">The texture values.</param>
public void AddSurfaceOfRevolution(
        Point3D origin, Vector3D axis, IList<Point> section, IList<int> sectionIndices,
        int thetaDiv = 37, IList<double> textureValues = null)

/// <summary>
/// Adds a surface of revolution.
/// </summary>
/// <param name="points">The points (x coordinates are distance from the origin along the axis of revolution, y coordinates are radius, )</param>
/// <param name="textureValues">The v texture coordinates, one for each point in the <paramref name="points" /> list.</param>
/// <param name="origin">The origin of the revolution axis.</param>
/// <param name="direction">The direction of the revolution axis.</param>
/// <param name="thetaDiv">The number of divisions around the mesh.</param>
/// <remarks>
/// See http://en.wikipedia.org/wiki/Surface_of_revolution.
/// </remarks>
public void AddRevolvedGeometry(IList<Point> points, IList<double> textureValues, Point3D origin, Vector3D direction, int thetaDiv)
于 2017-01-10T14:51:29.500 に答える