質問: ### 前提・実現したいこと Unity シェーダーの初心者です。 UnityのVertex関数にて頂点を法線ベクトルに沿って押し出す処理を行いました。 以下がそのコードとなっています。 今回は、どうしても理解できないことがありましたので、質問させていただきました。 ### 発生している問題・エラーメッセージ 問題はオブジェクトによってその押し出し具合に差がある事が理解できないということです。 画像の左側がUnityのプリミティブのSphere、右がBlenderで作成した頂点数約一万の球体です。 シェーダーを適応するとプリミティブのほうは2倍ほど、BlenderSphereは以上に大きくなっています。 自分の考えではベクトル法線ベクトルを足しているのでどちらも同じぐらい大きくなると思うのですが、 これはいったいなぜなのでしょうか。 ### シェーダ適用前 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/8171c09f659288806bc5931fc2934e8a.jpeg) ### シェーダ適用後 !![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/4eb48c10a0675afdfd12db0c0ca7ec40.jpeg) ### 該当のソースコード ``` void vert(inout appdata_full v, out Input o) { v.vertex.xyz += v.normal; UNITY_INITIALIZE_OUTPUT(Input, o); } ```
回答: インスペクタのスケール値がおかしくなっていないでしょうか? こちらで試してみましたが同じ現象がおきました。 Blenderから出力したモデルをUnityにImportした場合、スケールなどの情報がおかしくなる事があるらしいです。 このブログを参考に Apply Transformにチェックを入れて出力した所、問題が治りました。 ブログ