問題タブ [csg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
graphics - ベジェクリッピング
2つの任意の塗りつぶされた2Dオブジェクトの交差(新しい塗りつぶされたオブジェクト)を計算するアルゴリズムを見つけて作成しようとしています。オブジェクトは、線または立方体のベジエを使用して定義され、穴または自己交差する場合があります。ここにリストされている、ポリゴンで同じことを行ういくつかの既存のアルゴリズムを知っています。ただし、ベジエをポリゴンに分割せずにサポートしたいので、交差点がない領域では、出力は入力とほぼ同じコントロールポイントを持つ必要があります。
これは、インタラクティブプログラムがCSGを実行するためのものですが、クリッピングはリアルタイムである必要はありません。しばらく検索しましたが、良い出発点が見つかりませんでした。
floating-point - POVray: 表面に接触するだけのオブジェクトの素敵なマージを確実に作成する方法は?
私がしていること
prism
すべてのプリズムが一緒になってより大きな六角形を作るように、六角形の断面と中央のプリズムを囲む n 層のプリズムをアルゴリズムで描画するシーンがあります。
ここで、プリズムの各列は次の列から sqrt(3)/2 の倍数だけずれています (1 つのプリズムの寸法が <1,sqrt(3)> であるため、sin(120/2°) = sqrt(3) )/2)。
プリズムの寸法に対する結果の位置の浮動小数点値は、オブジェクト間のギャップがゼロになるように常に正確に一致するとは限りません。したがって、全体を で包み込み、merge
透明なガラス状のマテリアルを割り当てると、滑らかで均一な形状になりません。n の値に応じて、マージ オブジェクト内のエッジ、または一部のサーフェスの影、またはその両方で、ぎくしゃくした奇妙さが得られます。
これは、ASCII アートでシーンを説明するコードの先頭にあるコメント ブロックのスニペットです。
コード全体はここに貼り付けるには長すぎますが、ここで入手できます。私は下手なコーダーであり、POVray には#for
ループがないため、おそらく読むのも非常に苦痛です。
私の質問
- 表面に接触するだけで重ならない数学的に配置されたオブジェクトをマージする際に、float 値の予測不可能性と不正確さをどのように説明すればよいですか?
- これはPOVrayで私が望むように動作するはずですか?
- 私はここで非常に愚かなことをしていますか?
c - CSG ツリーを使用したレイ キャスティング
私は、レイ キャスティングを実行し、CSG ツリーを使用する必要があるプロジェクトに取り組んでいます。しかし、このプロジェクトで CSG ツリーを使用する方法や実装する方法がわかりません。レイ キャストを実行して、最終的な答えを出すことができます。私の問題は、実際にツリーを実装してリンクする方法です。
three.js - CSG.jsプロセスを経た後、three.jsシェイプにテクスチャを追加する
私はthree.jsとCSG.jsの両方を一緒に使用して、新しい形状を作成しています。
最高のコードではありません-最も重要な行は
CSGに変換されたカットシェイプにテクスチャを追加してから、THREEに戻そうとしています。私がそれをするたびに、私はthree.jsからランダムなエラーを受け取ります。MeshBasicMaterialを「MeshPhongMaterial」と「MeshLambertMaterial」に変更するのに疲れましたが、それでも同じエラーです。
だから私の質問は、私は何か間違ったことをしているのですか、それとも不可能ですか?
javascript - three.jsとCSGで位置を設定する
これを立方体とこの立方体の一部を切り取る球のコードとして使用すると、次のようになります。
どうすれば立方体の位置を設定できますか?cube.CSG.position.setのようなものが必要ですか、それともCSGライブラリで使用する特別なメソッドがありますか?
ありがとう!
three.js - Three.jsで中空シリンダーを構築するにはどうすればよいですか
Three.js で中空の円柱を作成するのに苦労しています。
CSG を使用するか、頂点をつなぎ合わせて作成する必要がありますか?
geometry - 2 つのセクション平面の交差
2 つ (またはそれ以上) の断面平面を使用して 3D オブジェクトをカットするアルゴリズムを見つけようとしています。オブジェクトは、両方の断面が切断されている場所でのみ切断する必要があります。したがって、2 つのセクション平面 s0 と s1 が交差する次の abcd 長方形を考えてみましょう。s1 は右方向にカットし、s0 は上方向にカットします。私が望むのは、結果の ajikcd 形状を持つことです。
これは非常に単純化された例ですが、私が何を達成しようとしているのかが明確になることを願っています。さらに、これは 3D で行う必要があります。
それを行うライブラリ、またはそれを行うアルゴリズムを知っている人はいますか? これは、私の前に誰かが解決したに違いない重要な問題のようです! :)
基本(面/面/エッジとの平面の交差)を行う方法を知っていることを付け加えなければなりません。私が見ることができないのは、考えられるすべてのケースを解決するスマートな方法があるかどうか (このケースでは 2 つの面を追加する必要がありますが、他のいくつかの面では 1 つの面しか作成できないなど)、またはそれらを処理する必要があるかどうかです。別々に。
追加する必要があるもう 1 つのことは、レンダリング部分については心配していないということです。クリッピング プレーンを使用して OpenGL でレンダリングする方法を知っています。私が望むのは、オブジェクトの新しいトポロジを計算できるようにすることです。
three.js - CubeGeometryのセクションを削除するにはどうすればよいですか?
現在、私はThreeCSG / CSGを使用して、はるかに大きな立方体から小さな立方体を差し引いています。これは正常に機能しますが、実際のジオメトリではなく、外観のみが変更されます。したがって、別のキューブでPhysiJS(物理エンジン)を使用すると、穴に落ちることはありませんが、通常どおりに動作します。デモをクリックしてください。
表示目的だけでなく、オブジェクトをCubeGeometryに分類できるように、実際にCubeGeometryからセクションを削除する方法はありますか?ありがとう!