3D通常のテクスチャマップを「ベーキング」することを目的としたC ++プログラムを書きたいと思います。
ユーザーは、3Dケージメッシュモデルを追加するオプションを使用して、低ポリおよびハイポリモデルを入力する必要があります。
ユーザーが「実行」を押すと、プログラムは実行されます。

始めるための最良のアプローチは何ですか？
プロセスをスピードアップするためにどのライブラリを使用できますか？
そのようなプログラムを構築するために、どのようなデータ型を処理する必要がありますか？
通常のマップベーキング用のC ++プログラムを書くことに興味があります。

通常のマップベーキングは、通常の情報を高ポリモデルからUVSを使用して低ポリモデルに転送するプロセスです。これにより、低ポリモデルは、ポリゴン数を増やすことなく、より詳細かつ現実的に見えます。

開始するには、C ++コンパイラとC ++をサポートするIDEが必要です。また、3Dモデルのロードと保存、画像の操作、レイトレースの実行に役立つライブラリが必要です。

通常のマップベーキングに使用できるライブラリの1つはEmbreeです。これは、高性能レイトレースカーネルのコレクションです。Embreeは複雑なジオメトリと素材を処理でき、使いやすいAPIがあります。

必要なもう1つのライブラリは、openExrです。これは、高ダイナミックレンジファイルファイル形式です。OpenEXRは、高精度と圧縮で通常のマップを保存できます。

このようなプログラムを構築するには、3Dモデル、画像、光線、および通常を処理するためにいくつかのデータ型が必要です。いくつかの例は次のとおりです。

3Dモデルの頂点、顔、UV座標を保存するメッシュデータ型。
画像のピクセル、幅、高さ、形式を保存する画像データ型。
光線の原点と方向を格納する光線データ型。
通常のベクトルのx、y、z成分を保存する通常のデータ型。
また、次のようなこれらのデータ型で操作を実行するための機能が必要です。

3Dモデルをファイルからメッシュデータ型にロードする関数。
画像データ型をOpenEXR形式のファイルに保存する関数。
EmbreeのAPIを使用して、低ポリメッシュのUV座標から光線を作成する関数。
EmbreeのAPIを使用して、高ポリメッシュと光線を交差させる関数。
EmbreeのAPIまたは独自のアルゴリズムを使用して、交差点から法線を計算する関数。
NormalをRGB値として画像データ型に保存する関数。
これがあなたがあなたのプロジェクトを始めるのに役立つことを願っています。あなたが私の応答についてこれ以上質問やフィードバックがあるならば、私に知らせてください。