おはようございます.
現在”家”の制作をしておりアドバイスをお願いします.
ユニークな静的/動的メッシュのスケール変更は基本的にXYZ等倍で行うと思いますが,
モジュール式,組み立て式に壁や床を配置するときは均等にスケール変更しない場合があります.
比率を変えてスケーリングするとマテリアル,テクスチャがストレッチしてしまいます.(伸びてしまいます)
いくつか調べて試しましたが,どれも難点があり困っています.
■TexCoord + ObjectScale
スケールに応じてタイリング回数を増減させればよいのであれば,TexCoord + ObjectScaleで実現できそうです.
メッシュは3軸,UVは2軸ですから,メッシュの3軸すべてのスケールには対応しませんが,
X,Y各軸一方のみであれば拡縮できるようになりました.
Xを拡縮しても,XZ平面が歪まずタイリングするのに成功しましたが,
YZ軸はスケールが変わらないにも関わらず,タイリングしてしまいます.
Q1:YZ平面もタイリングしてしまうのをマスクする方法はありませんか?
また,
Xを拡縮すると,XZ平面とXY平面は正しくタイリングしていますが,
Yを拡縮すると,YZ平面だけしか正しくタイリングしないのはなぜでしょうか?
■WorldAlignedTexture
WorldAlignedTextureとWorldAlignedNormalを組み合わせることで
比率を考慮せずスケールしてもテクスチャが無事にタイリングしてくれるようになりました.
しかし,XYZともに30度や60度に回転させると下画像のようになります.
Q2:この問題はなぜ起こるのでしょうか?また,解決方法などありますでしょうか?
メッシュが移動してもテクスチャは追随しないことから,3D空間のXYZ方向からプロジェクターのように投影しているのだと認識しています.
メッシュを回転させると(45度で最大)若干ながら歪むのもそのためだと思いますが,なぜ30度,60度で参考画像のようになるのでしょうか?
Q3:WorldAlignedTextureの”TextureSize(V3)”は見当で値を決めるのでしょうか?
手元にあるチェッカーパターンを目視で確認したところコンスタント”256”でテクスチャ全部を表示しました.
■追記(1)
実際のプロジェクトでTexCoord + ObjectScaleの手法を試したところうまくいきませんでした.
シンプルな正方形メッシュを自作してもうまくいきませんでした.
UE4のスターターキットに入っている[Shape_Cube]でしかうまくいきませんでした.
TexCoordを利用しているということはUV形状に依存ということだと思います.
[Shape_Cube]のUVは十字展開でも全面めいいっぱいでも無い形ですから,この手法実験はたまたま成功したということでしょうか?