タグ付けされた質問 「geometry」

2
モデルビュー行列の転置された逆行列が法線ベクトルの変換に使用されるのはなぜですか?
オブジェクトに変換が適用された3Dシーンをレンダリングする場合、法線はモデルビュー行列の転置された逆行列で変換される必要があります。したがって、法線、modelViewMatrix場合、変換された法線はnnnn ′MMMn′n′n' n′= (M− 1)T⋅ n個n′=(M−1)T⋅nn' = (M^{-1})^{T} \cdot n オブジェクトを変換するとき、それに応じて法線を変換する必要があることは明らかです。しかし、数学的に、これが対応する変換行列なのはなぜですか?

3
ゲームのジオメトリックLODの最新技術とは何ですか?
現代のゲームは、キャラクター、地形、葉などのオブジェクトメッシュのジオメトリの詳細レベルをどのように行いますか?私の質問には2つの部分があります。 資産パイプラインはどのように見えますか?アーティストは、後にデシメーションされるハイポリモデルを作成しますか?もしそうなら、どのデシメーションアルゴリズムが最も人気がありますか?LODメッシュは時々手作業で行われますか? 実行時にエンジンは異なるオブジェクトLOD間でどのように移行しますか?スムーズまたはプログレッシブトランジションはありますか? 答えは「スタジオごとに異なるテクニックを使用する」かもしれません。その場合、最も一般的な慣行をいくつか特定してください。特定の例をカバーするホワイトペーパー/スライドを教えていただければ幸いです。
15 geometry 

4
投影されたグリッド水面の詳細
私はC ++とDirectX11で海のシーンを実装しようとしています。現在、投影されたグリッド、ガーストナー波、基本的なシェーディングがあります。私の問題は、カメラを水平に向けると、水平線が遠くに見えるので、高い頂点数であっても投影されたグリッドが不十分になることです。これらのスクリーンショットは問題を示しています: 私は問題の原因が投影されたグリッドの概念にあることを知っています(グリッドはカメラの近くに詳細であり、それから大まかに離れています)が、これを解決するにはベストプラクティスが必要です。 何か案は?

2
生成されたジオメトリの表面法線を計算する方法
呼び出し元コードからの入力に基づいて3D形状を生成するクラスがあります。入力は、長さ、深さ、弧などです。私のコードはジオメトリを完全に生成しますが、表面の法線を計算するときに問題が発生します。点灯すると、計算中の不正確な表面法線により、私の形状に非常に奇妙な色/テクスチャがあります。私のすべての研究から、数学は正しいと信じています。私の技術や方法に何か問題があるようです。 高レベルでは、生成された形状の表面法線をプログラムでどのように計算しますか?私は自分のコードにiOSでSwift / SceneKitを使用していますが、一般的な答えは結構です。 形状を表す2つの配列があります。1つは、形状を構成する頂点を表す3Dポイントの配列です。もう1つの配列は、頂点を三角形にマッピングする最初の配列のインデックスのリストです。そのデータを取得して、形状の照明を支援する表面法線のセットである3番目の配列を生成する必要があります。(SCNGeometrySourceSemanticNormalSceneKitを参照) 頂点とインデックスのリストは、クラスへの入力に応じて常に異なるため、サーフェス法線を事前に計算したりハードコードしたりすることはできません。

1
3D Studioのスムーズメッシュが同じ数の頂点/三角形になるのはなぜですか?次に、それらを同じジオメトリでスムーズ化するにはどうすればよいですか?
3Dスタジオ(モディファイヤ/スムーザー)でスムージングされたメッシュが、そのプロセスの前後に同じ量の頂点/面を持ち、まったく同じジオメトリになる理由を理解しようとしています。 次の例では、両方のメッシュに32個の頂点と60個の面があります。 私はプログラミング(c ++およびc#)での作業経験がありますが、コンピューターグラフィックスの初心者です。したがって、私の予想では、スムージングされたメッシュのスムージングされた外観には、より詳細な最終メッシュを作成するために、追加の頂点、つまり三角形のサブディビジョンが必要になるということでした。しかし、そうではないようです。 したがって、私は尋ねます: 1)メッシュジオメトリの詳細を増やすことなく、どのようにスムージングが可能ですか? 2)スムージングは​​、元のメッシュと比較して、新しいメッシュを格納するために割り当て/使用されるメモリを少なくとも増やしますか? 説明は大歓迎ですが、参考文献(学術的かどうかにかかわらず)も高く評価されています。
11 3d  geometry  mesh  memory  model 

1
ボロノイメッシュを作成するパイプライン
Mayaプラグイン(この質問はMayaから独立しています)を実装して、3Dボロノイパターンを作成したいと思います。 私はポイントサンプリングから始めなければならないことを知っています(このペーパーで説明する適応ポアソンサンプリングアルゴリズムを実装しました)。 これらの点から、ボロノイを適用してメッシュの3Dワイヤーを作成する必要があると思いました((Python)scipy.spatial.Voronoiを使用しようとしましたが、期待した結果とは異なっていました)。 何か不足していますか?そのようなパターンを作成するために実装する必要がある適切なパイプラインとアルゴリズムを誰かが提案できますか? [編集]以下は、このようにscipy.spatial.Voronoiから取得した結果を処理する例です(ここで提案されているように): vor = Voronoi(points) for vpair in vor.ridge_vertices: for i in range(len(vpair) - 1): if all(x >= 0 for x in vpair): v0 = vor.vertices[vpair[i]] v1 = vor.vertices[vpair[i+1]] create_line(v0.tolist(), v1.tolist()) 灰色の頂点はサンプリングされた点です(元の形状は単純な球でした): これはより複雑な形状(腕)です
10 3d  geometry  mesh  polygon 

3
曲線に沿った一連の整理されていない点の順序付け
カーブ(つまり、ソリッドのエッジ)に属する一連の3Dポイント(ソリッドボディのテッセレーションを実行するライブラリから復元)があります。つまり、カーブはこれらの各ポイントを確実に通過します。 それにもかかわらず、ポイントセットは順序付けされていないため、この曲線を正しく描画できるようにポイントセットを並べ替える必要があります。 これらのタイプの問題に対する既知のアプローチはありますか? 追加情報: 曲線は一般にパラメトリックです(スプライン/ベジェ、円スライスなど)。 ポイントは浮動小数点座標として与えられます。 ポイントは非常に密に詰め込まれています(ただし、それらは私が望むほど密にできます)。アイデアを与えるために、xで19単位、xで10単位、zで5単位を占める曲線の場合、曲線のセグメントの一連の点を引用します:(20.7622、25.8676、0)(20.6573、25.856、 0)(20.5529、25.8444、0)(20.4489、25.8329、0)(20.3454、25.8213、0)
9 geometry  mesh  curve 

1
ベジェサーフェスに歪みを適用する
Adobe Photoshopで使用されている画像ワープ効果をシミュレートしようとしています。 長方形の画像は、3次ベジエ曲面に従って歪められます(2Dでは、すべてのZ成分は0です)。ベジエ曲面があれば、垂直歪み をそれに適用できます。d∈ [ 0 、1 ]d∈[0、1]d \in[0,1] 左:入力ベジェサーフェス、、右:出力サーフェス、 d= 0d=0d=0d= 0.8d=0.8d=0.8 左側のバージョンから右側の出力に変換するときに、ベジェサーフェス(16ポイント)に対して何が行われますか?

1
AABBに対して三角形をクリッピングした後の頂点の最大数
3D三角形を3D Axis-Aligned Bounding Box(AABB)に対してクリップして、AABBに含まれる三角形の最大の平面ポリゴンを取得します。私のクリッピングアルゴリズムは、堅牢な(わずかに変更された)バージョンです(たとえば、クリッピングプレーンには有限の厚みがあります)サザーランドホジマンアルゴリズム。AABBを構成する6つの平面のそれぞれに対して三角形をクリップします。 ヒープ(割り当て)の割り当てを回避するために、取得した平面ポリゴンのすべての頂点に対して、スタックに固定サイズのポイントバッファーを事前に割り当てました。私の質問は次のとおりです:AABBに対して三角形をクリップした後に取得できる頂点の最大数はいくつですか? 制御フローに基づいて、検査されたすべての頂点は、ポリゴンプレーンクリッピング中に2つの頂点になる可能性があります。したがって、頂点です。対称性により、これは頂点になります。ただし、実際には、取得する頂点の数は少なくなります。3 ∗263∗263*2^63 ∗23= 243∗23=243*2^3=24
8 3d  geometry  clipping 

1
ベジェ曲線と直線で構成される形状をどのように塗りつぶす必要がありますか?
私はしばらくの間グラフィックライブラリに取り組んでおり、ベジエフォントとラインベースのフォントを描画しなければならないところまで到達しました。この時点まで、私はこれで立ち往生しています: 緑の線はベジェパスで、白い部分がレンダリングされます。 ベジエに使用するコードはこちらです。ライン用はこちら。知らない人はルアです。 パスレンダリング(ライン):32-39アルゴリズムは次のとおりです。 特定の間隔で0から1まで繰り返す 次の式でxとyを計算します。 (1-index)^2*x1+2*(1-index)*index*x2+index^2*x3 この時点まで、すべてが正常に動作します。緑の線は、パスメソッドを使用して生成されます。 白い部分は完全に異なる方法でレンダリングされます: 特定のYでのベジエと線のx座標を取得し、それらをテーブルに入れます。 テーブルを繰り返し処理し、ポイントに遭遇するたびに状態の値を変更します。同じforループで、状態がオンかどうかも確認します。もしそうなら、私は画面にピクセルを描画します。 ayのx値を見つけるには、getXメソッドを使用します(ベジェでは46行目、ラインでは31行目)。 図面自体に使用するコードは次のコードです。 local xBuffer = {} local state = false for i=0,500 do for k,v in pairs(beziers) do a,b = v.getX(i) if a then xBuffer[round(a)] = 1 if b then xBuffer[round(a)] = 1 end end end for k,v in ...

1
3D空間の2D形状からアスペクト比を計算します
3D空間での2D形状の4つの座標を考慮して、そのアスペクト比を計算します。 3Dスペースは2つの消失点で作成されます。 青でマークされた4つの座標は、ディスプレイ上の2D座標です。この例では、おおよそ(14、5.5)、(19、5)、(20.3、7.3)、(25.3、6)になります。 これが可能かどうかは不明ですが、2つの異なるアスペクト比で2D座標が同じであるという証拠を誰かが見つけた場合、この問題は解決できません。 私の例:

2
C ++のアルキメデススパイラル
C ++でアルキメデススパイラルの x位置とy位置をプロットしようとしています。 これまでのところ、私はこのようなものを試してきましたが、運はありません: int dx = 0; int dy = 0; int x = 0; int y = 0; for (int i = 0; i < maxPoints; i++) { dx = sin(i * PI / 2); dy = cos(-i * PI / 2); x += dx; y += dy; ...
8 c++  geometry 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.