by エミ
モデルを3DCoatにimportと、ビューポート レンダラ上のnormal mapが正しく表示されない場合があります。ただし、それは他のソフトウェアでモデルをエクスポートする方法から始まります。
法線マップは、ソフトウェアによる法線マップの読み取り方法に関するシェーディングの問題を少し修正する可能性があり、それにより問題が少し目立たなくなる可能性がありますが、問題はまだ存在します。より良い法線マップをベイクすることで、実際の問題を解決し、仕事と生活を楽にするために役立つルールをいくつか適用する必要があります。
このルールを一般的に適用しないと、ほとんどの法線は平均的であり、難しいものはほとんどありませんでしたが、これは見るのが奇妙でした。しかし、それが問題の主な原因であることは明らかであり、モデルのスムージング グループをどのようにエクスポートするのか、またそれらが他のソフトウェアでどのように読み取られるのかということです。
まず、ボックスはソフト エッジや平均的なものにすることはできません。ボックスは 90 度の角度であり、ハード エッジに設定されていない場合は、何をしても、常にこの照明の問題が発生します。かつては、Marmoset のような高度なベイク プログラムが簡単にできるようになる前は、常にケージを作成する必要があり、そのケージは平均的な頂点法線を持つものでした。そのため、ケージは平均的な頂点法線を行うために使用されていました。ボックスがハード エッジを思い出させるため、ベイク処理でエラーが発生することなく、ハイポリゴンを検索できます。もちろん、現在マーモセットには同じことを行う「スムーズなケージ」チェックボックスがあり、本当にケージが必要でない限りケージは必要ありません。
したがって、ここには 2 つの「ルール」があり、それらもリンクされています。
1. 90° の角度でモデルを作成するときは、常に硬くする必要があります。もちろん、少し面取りをして、90° の角度のエッジを避けることもできます。これにより、高解像度モデルの形状に忠実に従うだけでなく、ボックスのソフト エッジを使用して、見た目をより美しく、問題を少なくし、丸みを帯びて美しくすることもできます。
2. ハード エッジ (ほぼ 90° の角度である必要があります) も、問題を回避するために常にUV上で分割する必要があります。モデルではあまり気づかないかもしれませんが、実際には存在しており、それはピクセルが 90 度の角度で交わる、ピクセルがどのようにブレンドされるか、それらは単に異なるだけであるため、発生する可能性のある小さな問題を修正するためのパディングのような十分なスペースはありません。はい、解像度やUVsなどによって異なりますので、他のものより目立つ可能性がありますが、このようなボックスを作成する場合は、90 度のエッジをすべて分割する必要があります。つまり、問題を回避するには、ボックスの 6 つの側面 = 6 つの島を意味します。
3DCoatとそれがプリセットなどでどのように機能するかについて話します。これについて私が理解しているのは、 BlenderやUnityのプリセットを使用すると、法線マップの処理方法だけでなく、緑反転するかどうかを指定した事前定義ファイルを実際に使用していることになります。ただし、接線空間、三角形分割、法線やその他のオプションのエクスポート方法も含まれます。 [不明] オプションを使用すると、環境設定で設定したものを使用できるようになります。
C:Program Files 3DCoat-VXXXToolsPresetsExtTools に移動すると、XML ファイルと、 UnityとBlenderの違いが表示されます。これは、 Blenderプリセットは MikkTSpace を使用するのに対し、 unityは LengyelAreaAngleWeightedSpace に設定されているためです。それが唯一の違いです。しかし、それらは異なって解釈されているので、それを見るには十分であるようです。技術的には、これらはあまり影響を与えず、「DirectX」または「OpenGL」の場合にnormal mapを読み取る方法にのみ影響を与えるはずですが、シェーディングの問題の根本はnormal mapに関するものではなく、モデルに関するものであり、常にモデルでいてください。
UVsルールはさておき、それが引き起こす問題は最小限です。それを認識しているのであれば、 UVスペースを節約し、エッジと発生する可能性のある問題を無視するか、近づきすぎる必要があるため正しく実行するかはあなたの選択です。問題に気づくために。時々エッジ間に大きなギャップがあることが私に起こりました。
ボックスを平均的な頂点法線またはソフトとして使用できない場合、ボックスは 90° の角度のエッジであるため、ハード エッジのボックスのように見える必要があります。ソフトエッジを使用したい場合は、ベベルを作成する必要があります。
ボクサーは 100% ハードエッジ、シリンダーは上部と下部がハード、サイドがソフトである必要があります。
ローポリモデルの場合は、ベベルを作成することをお勧めします。多くの場合、ほんの小さなベベルが大きな違いを生みます。特に今日では、このようなものにベベルのないボックスを使用する言い訳はありません。
3DCoatプリセットは、unknown を使用して手動で選択することもできる小さなバリエーションにすぎません。プリセットは必要ありません。プリセットは、 3DCoat がnormal mapとモデルを解釈するのに役立つだけです。しかし、私はプリセットを決して信頼しません。なぜなら、あなたが言うように、 Unityプリセットはそうあるべきだからです。 MikkTSpace に設定します。しかし、私が言いたいのは、これは単に OpenGL と DirectXのnormal mapの問題ではないということです。
したがって、通常ペイントに3DCoat を使用すると、すべてが正常に動作しますが、それは、ローポリのすべてが適切であることを確認しているためです。つまり、適切な法線マップを作成し、適切なローポリゴンが必要な場所でそれらが機能するようにするためです。作成したハイポリのディテールをすべてキャッチできるポリ。魔法はありません。スムージング グループやUVsなど、すべてを確実に行っているため、機能します。
私が言いたいのは、90° エッジを持つモデルは自動的にハード エッジに設定されるべきであり、他に回避方法はなく、それだけであるということです。この場合のように Cube に 6 つの側面があるか、または幅、高さ、奥行きが 1000 の細分化されているかどうかは関係ありません。ボックスの 90° の角度をハード エッジとして設定しない場合、90° であるがソフトなどに設定されているエッジには常に奇妙なシェーディングが表示されます。
オブジェクトのセット全体に1 つのスムージング グループを適用している場合、それは間違いです。ボックスにソフト エッジを作成することはできません。特に、オブジェクトが 6 つの面を持つ立方体のみの場合はそうです。
特に単純な 6 ポリゴンのボックスがある場合、ボックスを使用したい場合はすべての辺をハード エッジに設定するなどのことを「スムーズ」にすることはできません。または、もう 1 つの唯一の方法は、エッジの周りにベベルを追加して 90° の角度を厳しくし、それからソフトに設定することです。問題を隠すためにnormal mapをBakingは解決策ではありません。見た目は少し良くなるかもしれませんが、シェーディング エラーがモデルにまだ存在します。円柱であっても、側面にはソフト エッジがあり、ベベルを追加しない限り、上面と底面にはハード エッジが設定されている必要があります。
そこで質問は、すべてを単一のスムージング グループとして維持したいかということです。適切に作業して、ハードエッジを硬くし、ソフトエッジを柔らかく設定したり、90°角度ごとにベベルを追加したりしない限り、問題は何も解決されません。normal mapで問題を隠して問題がないふりをする必要があります。存在します。
ここで問題が何であるかを適切に説明できたので、今後のnormal mapのベイク処理に役立つことを願っています。
頑張って、良い一日を!