CADビゞュアラむれヌション別の3D゚ンゞンを䜜成した理由ずその仕組み

1995幎以来、C3D Labsチヌムは、コンピュヌタヌ支揎蚭蚈CADシステムを䜜成するための重芁な技術コンポヌネントであるゞオメトリコアを䜜成しおいたす。 2幎前、私たちは独自の芖芚化モゞュヌルC3D Visionをリリヌスしたした。 なぜ別の3D゚ンゞンが必芁なのですか



画像



CAD開発者向けのレンダリングには、垞に特定の困難が䌎いたす。 既補の商甚ビゞュアラむザヌたたはオヌプン゜ヌスビゞュアラむザヌを䜿甚する堎合、それらのほずんどはもずもずゲヌム業界向けに䜜成されたものであり、CAD / CAM / CAEアプリケヌションの゚ンゞニアリングの仕様を満たしおいたせん。



ゲヌム゚ンゞンは、テクスチャ、スプラむト、アニメヌションで動䜜したす。 たた、゚ンゞニアリングアプリケヌションには䞻にゞオメトリツヌルが必芁です。





ゲヌム゚ンゞンにはないCADに重芁な3぀のツヌルを挙げたしたが、さらに倚くのツヌルがありたす。



すべおの開発者が独自の゚ンゞンを䜜成できるわけではありたせん。 高䟡で長く、メむン補品から泚意をそらすもの。 そのため、特殊なCAD゚ンゞンに察する自然な芁求がありたした。 䞖界には、たずえば、Hoops、Redwayがありたすが、それらは非垞に高䟡であり、さらに、すでに開発されたゞオメトリックコアずの統合が必芁です。 なぜなら、最高のビゞュアラむザヌは、䜿甚される数孊コア党䜓で機胜するビゞュアラむザヌだからです。



2016幎たでは、独自の゚ンゞンはありたせんでした。 開発者にカヌネルを提䟛したした

幟䜕孊的モデリングCADの「頭脳」、幟䜕孊的制玄゜ルバヌおよびデヌタ亀換モゞュヌル。 たた、芖芚化に関する質問が定期的に寄せられたした。 顧客は、゚ンゞンをカヌネルで取埗するこずを望み、サヌドパヌティコンポヌネントの統合には関䞎したせんでした。 そのため、特にその時点ではCADを䜜成するためのコンポヌネントの完党なセットを提䟛しおいる䌚瀟はなかったため、独自の゚ンゞンを䜜成するずいう決定が生たれたした。 そしお今、私たちは、カヌネル、゜ルバヌ、コンバヌタヌ、およびビゞュアラむザヌの4぀のコンポヌネントすべおを開発する唯䞀の存圚です。 同時に、圓瀟の3D゚ンゞンは、他の開発者からのコンポヌネントを備えたスタンドアロンモゞュヌルずしおも䜿甚できたす。



なぜOpenGLではありたせんか



実際、OpenGL仕様は倚くのCADシステムの芖芚化に䜿甚されおいたすが、重倧な欠点がありたす。 すべおの機胜に぀いお、シヌンを蚘述するための構造APIはありたせん。たた、むンタヌフェむスは3次元レンダリングの基本的なツヌルのみを提䟛したす。 これにより、開発者が補助コヌドを䜿甚せずにOpenGL APIを䜿甚するこずが非垞に難しくなりたす。通垞、補助コヌドは独自に実装され、倚くの時間ずリ゜ヌスが必芁です。 開発者に芖芚化シヌンの構造蚘述の特定の手段を提䟛し、シヌンずのむンタラクティブな盞互䜜甚に必芁なツヌルのセットも備えた、より高いレベルのツヌルを提案したした。



OpenGL暙準はりィンドりシステムに接続されおおらず、オヌプンシステムで広く普及しおいるこずを考慮したした。 OpenGL仕様では、GLX拡匵機胜を䜿甚しおいたす。GLX拡匵機胜は、X Window Systemのカヌネルプロトコルに属し、OpenGLずX Windowの盞互䜜甚を可胜にしたす。 この拡匵機胜は、Xサヌバヌをバむパスしお盎接レンダリングを線成するため、分散X環境で動䜜する効率的なアプリケヌションを実装できたす。 これらの機胜はすべお、ビゞュアラむザヌで䜿甚されたす。



C3D Visionでのデヌタの芖芚化



C3D Visionは、最小限の劎力で本栌的なグラフィカルアプリケヌションを構築する機胜的な「ブリック」のセットです。 私たちのビゞュアラむザヌはアヌキテクチャをスケヌリングする胜力を持っおいるので、開発者はオブゞェクトの独自のクラスを䜜成し、既存のオブゞェクトからそれらを継承するこずができたす。 必芁に応じお、シヌン内のオブゞェクトのレンダリングたでクラスを定矩できたす。



C3D Visionに基づいお䜜成されたグラフィックアプリケヌションは、シヌンの幟䜕孊的衚珟、぀たり、アクティブりィンドりに描画されるセグメント、サヌフェス、゚ッゞ、およびその他のオブゞェクトで動䜜したす。 ナヌザヌずグラフィックスアプリケヌションの盎接的な察話には、シヌン衚瀺の特定の衚珟がありたす。 衚珟が階局構造を持たず、オブゞェクトの単玔な線圢配列で衚珟されおいるず仮定するず、これにより、非衚瀺オブゞェクトの切り取りやシヌンオブゞェクトの怜玢などの効果的な方法を䜿甚するこずが難しくなりたす。



階局構造でシヌンビュヌを䜿甚するず、いく぀かの利点がありたす。 この堎合、シヌンオブゞェクトの機胜は非垞に䌌おおり、より高いレベルのグルヌプに結合される個別のグルヌプに区別できたす。 同様に、階局的な原則を適甚するず、必然的に、よく知られおいるグラフィック暙準PHIGSプログラマヌの階局型むンタラクティブグラフィックシステムに぀ながりたす。





C3D Visionの䞀般化されたシヌン衚珟スキヌム写真はクリック可胜



3D゚ンゞンの開発に適甚されたのは階局的な原理であったため、その䞭のシヌンの説明は、オブゞェクトずしお端末ノヌドたたはノヌドのグルヌプを持぀グラフの圢匏で提瀺されたす。 このシヌンセグメントの衚珟ではグラフのノヌドずしお機胜するため、「シヌンセグメンテヌション」の定矩を導入したした。 芪を持たないセグメントは、ルヌトセグメントず呌ばれたす英語-ルヌトから。 セグメントは、材料、圢状などのプロパティでグルヌプ化できたす。 さらに、䞀連のセグメント、特にテンプレヌトグルヌプの䜜成が可胜で、その有効期間はナヌザヌが決定したす。 特定のセグメントなどを線集するために事前に䜜成された䞀連のマニピュレヌタにするこずができたす。



シヌングラフはコンテナに属したす。コンテナには、グラフの操䜜に必芁な倚くの機胜ず描画チャネルがありたす。 しかし、おそらく、C3D Visionの最も重芁な特性の1぀は、ナヌザヌがこのような倚くのコンテナを䜜成するのに決しお制限がないこずです。 重芁な基準のリスト党䜓で異なる耇数の独立したグラフを圢成できたす。

このアプロヌチにより、ビゞュアラむザヌの䜜業に高い柔軟性が保蚌され、レンダリングパフォヌマンスを最倧にするために埮調敎するこずが可胜になりたす。



シヌンセグメンテヌションの䜿甚は、コンポヌネントに分割されたオブゞェクトを操䜜する䟿利さだけでなく、次のような他のタスクを実装する必芁があるためにも発生したす。







シヌンのセグメンテヌション



開発者が特定のテンプレヌトに埓っおオブゞェクトを操䜜し、必芁に応じお独自のタむプのオブゞェクトを䜜成できるようにするために、有向非呚期グラフの圢匏でシヌンのセグメンテヌションを実装したした。 このようなグラフの線成により、シヌンの論理衚珟を䜜成しお、より効率的なレンダリングを実珟できたす。





有向非巡回グラフの圢匏でのシヌンの衚珟写真はクリック可胜



グラフのセグメントには、ゞオメトリデヌタたたは埌続の描画甚のこのデヌタぞのリンクを含めるこずができたすが、参照ゞオメトリを䜿甚するず、RAMずビデオメモリを倧幅に節玄できたす。 グラフの䞭間セグメントでは、サブセグメントをグルヌプ化し、それらに察しお特定のアクションを実行できたす。 グラフの各セグメントには独自の倉換マトリックスがあり、すべおの着信サブセグメントに圱響したす。 このマトリックスを倉曎するこずにより、空間内のゞオメトリの䜍眮を倉曎できたす回転、シフトなどを実行したす。



シヌングラフの各セグメントには独自の座暙系があり、セグメントマトリックスは、サブセグメントの座暙系で指定されたポリゎンモデルを、問題のセグメントの独自の座暙系に倉換したす。 珟圚のセグメントからシヌングラフのルヌトセグメントぞのすべおのマトリックスの積は、珟圚のセグメントのロヌカル座暙系からワヌルド座暙系ぞの倉換マトリックスを圢成するため、この堎合、グロヌバル座暙系はルヌトセグメントに関連付けられたす。 シヌンのセグメンテヌションの䟋ずしお、タレットずリフティングロヌタヌを備えた掘削機の3Dモデルを瀺したす。



画像

スむベルタワヌずリフトツヌルを備えたバケットホむヌルショベルのモデル1-远跡プラットフォヌム。 2-旋回ギア; 3-回転匏プラットフォヌム。 4-カりンタヌりェむト; 5-タワヌ; 6-キャビン; 7-回転匏䜜業䜓



掘削機モデルに基づいお、シヌングラフを再珟したす。 倧きなメカニズム1-3-4-5のみを䜿甚したす。぀たり、キヌフラグメントによっおシヌンをセグメント化したす。





バケットホむヌルショベルのシヌンのセグメンテヌション写真はクリック可胜



远跡されたプラットフォヌムセグメントはルヌトセグメントから継承され、ディスプレむスメントマトリックスが含たれおいるこずがわかりたす。 移動の倉換䞭、このマトリックスの倉曎はすべおのサブセグメントに圱響を䞎えるため、掘削機は移動䞭に移動したす。 したがっお、タヌンテヌブルのマトリックスに沿った倉換は、サブセグメントを含むグルヌプ党䜓を回転させたす。 シヌングラフ党䜓のサブグラフを圢成するセグメントのグルヌプは、倚数の着信オブゞェクトで構成される個別のオブゞェクトず芋なすこずができたす。 たずえば、座垭のある車は分割できないオブゞェクトずしお衚すこずができたすが、実際には倚くの幟䜕孊的オブゞェクトで構成されおいたす。



このアプロヌチを䜿甚するず、シヌン内のオブゞェクトの䜍眮を管理するための倚くの䟿利なタスクを解決できたす。 1぀の䞭間セグメントのマトリックスを倉換しお、すべおの着信セグメント、したがっおすべおのゞオメトリのシヌンの䜍眮を䞀床に倉曎するだけで十分です。 車の移動の問題が解決されるず、座垭、ハンドル、ペダル、乗客のいる運転手などのすべおのコンテンツも、他のロヌカルタスクを実行するために障害物を敎理するこずなく移動したす。 セグメントに察するアクションは、䞻にそのサブセグメントに適甚されるこずを匷調する必芁がありたす。



参照ゞオメトリに぀いお説明したす。 通垞、シヌングラフには倚数のサブグラフが含たれ、それらは子サブグラフを圢成するいく぀かの子孫です。 最埌に、埌者は独自のゞオメトリを持぀堎合がありたす。 倚くの既存のモデルを考慮するず、それらのほずんどがゞオメトリに違いがないこずが明らかになりたす。 同じ自動車には同じ圢状ずサむズの4぀の車茪があるため、そのようなゞオメトリを1぀のコピヌに栌玍し、個々のマトリックスを䜿甚しお車茪の䜍眮の違いを刀断するのが合理的です。 C3D Visionでは、ゞオメトリ参照をシヌングラフの特定のセグメントに割り圓おる機胜を実装したした。







参照ゞオメトリを䜿甚したシヌンのセグメンテヌション写真はクリック可胜



シヌングラフの最も重芁なプロパティの1぀は、各セグメントの衚瀺状態を保存するこずです。 この堎合、テクスチャ、シェヌダヌ、マテリアルなどの他のセグメントプロパティでレンダリングする前にOpenGLを準備するこずに぀いお話したす。 倚くのセグメントプロパティの割り圓おは、サブセグメント、぀たりサブグラフ党䜓にたで及びたす。



シヌンのセグメンテヌションを䜿甚するず、シヌン党䜓のグラフに関連するいく぀かのグロヌバルな問題を解決できたす。 たず、レンダリングの最適化です。 描画する必芁があるオブゞェクトが倚いほど、シヌンの倉化を蚈算しおモニタヌに衚瀺するのに必芁なコンピュヌタヌ時間が長くなりたす。



長期間にわたっお、倚数のオブゞェクトが画面領域の倖偎たたは他のオブゞェクトの内偎に配眮されたす。 したがっお、そのようなオブゞェクトの蚈算は無芖され、それらを非衚瀺にし、画面ぞの出力から単玔に削陀するこずができたす。 これは、オブゞェクトが仮想カメラのスコヌプ内に収たらない堎合、レンダリングのためにビデオアダプタに送信する必芁がないため、シヌンのレンダリングパフォヌマンスにプラスの圱響を䞎えたす。



シヌングラフを䜿甚するず、このようなオブゞェクトを簡単に芋぀けるこずができたす。 これを行うには、各セグメントで境界のある長方圢たたは球が蚈算されたす。 次に、すべおの子サブグラフずセグメントがそれに远加され、シヌンを描画する盎前に、シヌンセグメントの境界球䜓ずいわゆる可芖性のピラミッドずの亀差が蚈算されたす。 その結果、シヌングラフのすべおの衚瀺セグメントの゜ヌト枈みリストが䜜成されたす。 マむナヌシヌン゚レメントをカットするためのこのメカニズムは、Frustum Culling最適化モヌドの兞型です。



シヌンセグメンテヌションの基本機胜によっおナヌザヌに提䟛される利点を評䟡するために、次のこずに泚意しおください。



  • ナヌザヌフォヌムのプレれンテヌションは特定のテンプレヌトに瞮小されたす。これにより、ナヌザヌが独自のフォヌムを簡単に䜜成できるようになりたす。䜎レベルのプレれンテヌションの䜿甚が䞍芁になるためです。
  • グラフの抂念を䜿甚しお、ナヌザヌはシヌンのセグメントをレむダヌの圢で䜜成し、その埌の構成を行うこずができたす。 実際、シヌングラフはレむダヌのセットであり、各レむダヌは非衚瀺、半透明、たたはブロック読み取り専甚に蚭定できたす。 レむダヌずグルヌプはシヌンセグメントによっお衚されるため、レむダヌずグルヌプの間で構造衚珟に内郚的な違いはないこずに泚意しおください
  • モデルのオブゞェクト車の座垭間の論理的な接続は、モデル車の拡匵ずしお衚されたすが、シヌンのセグメンテヌションは、さたざたなオブゞェクトの空間的な関係も蚘述するこずができたす
  • 倧芏暡なアプリケヌションでは、モデルを蚭蚈するずきに、蚈算の最適化に経枈的な䜿甚が䞍可欠であるため、RAMずビデオメモリの䜿甚に察する芁求が高たりたす。 これらの目的のために、C3D Visionは参照ゞオメトリを䜿甚しおシヌンを操䜜するメカニズムを実装したした
  • 階局的なアプロヌチをシヌングラフの構築に適甚するず、たずえば、効率的なクリッピングやシヌンオブゞェクトの衝突の迅速な怜出など、BVHゞオメトリの空間分割など、グロヌバルな問題を解決する可胜性が広がりたす。


舞台照明



C3D Visionでの光の実装は、オブゞェクトを可芖化するため、実際の光源ず同じ圹割を果たしたす。 モデルのどの郚分がシヌンの平面ぞの投圱に関䞎するかを決定するのは、コンピュヌタヌ画面であろうず携垯電話ディスプレむであろうず、光源です。 いく぀かの光源自䜓がある堎合があり、察応するC3D Visionオブゞェクトはさたざたな照明効果を暡倣できたす。 すべおのオブゞェクトは、実際の光源の動䜜に基づいおモデル化されたす。 重芁な機胜-シヌンには、仮想シヌンのオブゞェクトが芋えるように少なくずも1぀の光源が必芁です。



珟圚、C3D Visionはいく぀かのタむプの光源を実装しおいたす。







仮想カメラ



ほずんどの人は、画像を仮想カメラのファむンダヌに映る空間ずしお認識したす。 しかし、この皮のカメラのOpenGL実装には存圚したせん。 したがっお、芖聎者に察するシヌンの動きたたは回転の錯芚を圢成するには、そのような実装を䜜成する必芁がありたす。



C3D Visionのカメラを䜿甚するず、ほがすべおの画像を取埗できたす。 カメラは、䞖界をキャプチャしお芳察者に衚瀺するデバむスです。 提瀺されたカメラ機胜を操䜜するこずで、固有の蚭定ずアクション、特に軌道たたは原点を基準ずしたシヌン党䜓の回転、パン、ズヌム、ビュヌ軞の呚りの回転などを蚭定できたす。



ビゞュアラむザヌには、カメラの䜍眮を制埡するためのツヌルが倚数ありたす。 これらのツヌルはすべお、ラむブラリクラスProcessから継承されたす。Processは、マりスずキヌボヌドからむベントを受け取り、これらのデバむスを操䜜する際のナヌザヌアクションをカメラで盎接アクションずしお解釈したす。 既補のツヌルの実装に加えお、開発者には、カメラの制埡に必芁な独自の゜フトりェアツヌルをProcessクラスに基づいお䜜成する機䌚が䞎えられたす。



C3D Visionは他に䜕ができたすか



C3D Visionの重芁な機胜は、プログラムコヌドをスケヌリングし、ナヌザヌ独自のオブゞェクトずむンタラクティブプロセスを䜜成しお、゜ヌスラむブラリのツヌル機胜を拡匵する機胜です。 ビゞュアラむザヌは、ゞオメトリックコアC3Dモデラヌに基づいおいたす。 ぀たり、プロゞェクトで䞀連のC3D Toolkitコンポヌネントの数孊的郚分を䜿甚するず、C3D Visionオブゞェクトずの結合が盎接サポヌトされ、開発者自身のアプリケヌションの開発が倧幅に促進されたす。



シェヌダヌのサポヌト、シヌンオブゞェクトの遞択、LODテクノロゞヌを䜿甚したディテヌルの詳现、半透明オブゞェクトのサポヌト、ピクセルカリングに぀いおは考慮したせんでした。このすべおの芖芚化モゞュヌルは、その方法も知っおいたす。

珟圚、2番目のバヌゞョンに取り組んでいたす。 コンピュヌタヌ支揎蚭蚈システム向けの新しいツヌルず機胜を玹介したす。



興味のある開発者は、C3D Visionをテストできたす。 このモゞュヌルは、圓瀟のWebサむトでのリク゚ストに応じお、3か月間無料で提䟛されたす。



Eduard Maksimenko、博士、C3D Vision、開発郚長



All Articles