質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

Q&A

解決済

2回答

2153閲覧

Shader Graphでメッシュを法線方向に拡大した時に、メッシュが分解してしまう

morirou

総合スコア26

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

0グッド

0クリップ

投稿2022/02/25 06:01

メッシュの法線に関する質問です。
基礎的な部分かもしれませんが、自分には良く分からなかったので質問させて頂きました。

以下のShader GraphのUnity公式動画(39:50頃)で、円柱オブジェクトに対してメッシュの法線方向(Normal Vector)にsinカーブを掛け算し、それをPositionに入れることでメッシュの拡大・縮小しを実現していました。(説明が下手なので、動画を見て頂けると早いかもしれません)
https://www.youtube.com/watch?v=7ToExWKVZW0&t=419s
イメージ説明

 
この円柱オブジェクトをBlenderで作り、Unityでエクスポートして上記のShader Graphを適応したのですが、メッシュが法線方向に拡大している部分が分裂してしまいました。
イメージ説明
イメージ説明

 
上記の動画の内容ででてきたUnityのプロジェクトは公開されていたので、そのプロジェクトに入っている円柱のメッシュを使用してみたのですが、どれだけ法線方向に拡大しても分裂はしませんでした。
また、Blender内にて、「Blenderで自作した円柱」・「公開されていたUnityプロジェクトの中に入っていた円柱のメッシュ」を比べてみましたが、特に違いは見つけられませんでした。

 
私の感覚からしたら法線方向に頂点を移動させても、メッシュの三角形が伸びてくれることによって分裂はしない気がするのですが、なぜ今回は分裂してしまったのでしょうか?
分裂させない方法、メッシュの法線に詳しいサイトなどあれば教えてもらえれば幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

作成された円筒はメッシュがだいぶ細かいので判別しにくいかもしれませんが、マテリアルを通常の陰影付きのものにしたとき、下図のように側面がフラットな感じ...つまり「円柱のような多角柱」の状態になってはいませんでしょうか?

図1

もしそうだとすると、仮に法線をシーン上に図示すると下図のようになっているだろうと想像されます。

図2

このような状態だと仮定すると、側面を構成する各面が独立した法線を持つために頂点を動かしたときに側面が裂けてしまうでしょう。

図3

そのような心当たりがありましたら、対処法の一つとしてはモデルのインポート設定の「Normals」を「Calculate」にして、モデルが持つ法線を使用せずに自動計算させる手があるかと思います。

図4

「Smoothing Angle」を適切に設定してやれば、面同士の角度が浅い部分は曲面と見なされ、下図のように側面をなめらかにできるかと思います。

図5

この状態なら、側面をなす各面は法線が共有されて1本になるでしょうから...

図6

頂点を移動させても裂け目が生じなくなるんじゃないでしょうか。

図7

投稿2022/02/25 14:08

Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Bongo

2022/02/25 14:13

すみません、タイミングがkatsukoさんのご回答にかぶってしまいました... あいにく私もBlenderに疎くてはっきり申し上げることはできずすみませんが、おそらくkatsukoさんのお示しいただいたトピック中のAllundoさんによる対処法も有効だろうと思います。
morirou

2022/02/26 01:45

ご回答ありがとうございます!大変分かりやすかったです! 結果としては、BlenderでスムースシェードかけてUnityにインポートすると、モデルのインポート設定の「Normals」が「Calculate」として出力されていました。(スムースシェードをかけずにインポートすると設定値が「インンポート」として出力されました) つまり、katsukoさんのご提示して下さった回答と、Bongoさんがご提示して下さった回答はやり方が異なるだけで同じ結果になるのだろうなと思いました。(浅学のため、間違っていたらすみません...) また、Unityのモデルのインポート設定にこのような項目があることを初めて知れたのでその意味でも勉強になりました。 正直どちらにもベストアンサーを差し上げたいのですが、今回はkatsukoさんが僅かながらに早く回答して頂いたのでkatsukoさんのご回答ベストアンサーとさせてい頂きます。 お二方ともありがとうございました!
guest

0

ベストアンサー

以前自分が回答したstackoverflowの質問ですが、これと同じことではないですか。

自分はBlenderは使ったことがないけど、上記質問者さんがBlenderでの対応も書いてくれましたし、参考にされてはいかがですか。

投稿2022/02/25 14:06

katsuko

総合スコア3469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問