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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

2531閲覧

Unity:3Dモデルについてです。面の数が少ない方が、動作は早いですか?

Sashimi_ShowYu

総合スコア61

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/06/22 12:50

まず、以下の画像AとBを見て下さい。
(A)
イメージ説明

(B)
イメージ説明

Bは私が複数の面を結合して、Aから面の数を減らしたものです(もっと減らす予定です)。
ぱっと見、どう見てもAには無駄に分割されている面があると思ったからです。
そこで質問です。
AとBでは、
1:どちらが処理が軽いか?
2:どちらの方がデータ容量が少ないか?
です。

もちろん、画像のようにわずかに面の数が減らしただけでは何も変わらないと思うのですが、1つの面がAのように無駄に例えば100個に分割されているのと、そうでない立方体があって、そんな立方体を複数出して動かしたりする時、差が出るかどうかです。
作っているのはPC向けのゲームです。

頂点は少ないほうがいいと思うので、きっとBのほうが軽いし容量も少ないのではないか、と思っています。
ただ、サイトなどで販売されているモデルを見るとAのように作られているものがあります。
Unityでも、エディタ上で Create → plane とやってプレーンを作ると、1枚の平面なのに、ワイヤフレームで確認すると、なぜか10*10に分割されて構成されています。
平らな面がある程度分割されても大して処理が重くならないものなのでしょうか?
もしくは分割していたほうが何かメリットがあるのでしょうか?

手作業で面を減らすべきなのかで悩んでいます。

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

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

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

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

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

guest

回答2

0

ベストアンサー

まず頂点数に関してですが、これは当然少ない方が軽いです。なので、わずかであっても頂点数が少ないBの方が容量的に軽いはずです。

処理の重さも同じです、無駄に頂点数が多いオブジェクトを描画するのは負担がかかります。
といっても、それこそ何万~何十万、もしくは億単位でもない限り、よほどロースペックなPC出ない限りPC上で動かすのであればさほど差はないと思います。モバイルデバイス上で描画する際は如何に減らすかを工夫する必要があります。

>ただ、サイトなどで販売されているモデルを見るとAのように作られているものがあります。
これに関しては物によると思いますが、頂点数を減らさない理由は様々あって、オブジェクトの形状を再編集する際に頂点がマージされているとまた分割から始めなければいけないためであったり(恐らくはこれが大きな理由だと思います)、安易に頂点数を減らして形状が劣化してしまうことを防ぐことを目的としていたり、特に意味はなかったりするかもしれません。

>1枚の平面なのに、ワイヤフレームで確認すると、なぜか10*10に分割されて構成されています。
これはそういう物として作られているとしか私からは説明できません...。多分そこに深い意味はないと思います。なので、頂点数4点でつくられた板が欲しい場合は自作するしかありません。

あとBlederをお使いのようですので、このような記事を読めば色々と参考になるかもしれません。

投稿2020/06/24 01:01

Y0241-N

総合スコア1066

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

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

Sashimi_ShowYu

2020/06/25 20:38

ありがとうございます。 非常によく分かりました。 頂点削減は効果だが、多少頂点数を減らしたところで微々たるものということですね。 あと、Blenderについてまで、参考になる情報をありがとうございます。 ちょっと、導入して試すのに時間かかりそうで、まだできていないのですが、これを使えば手作業でなく自動で頂点数削減できそうですね。 重ね重ねありがとうございます。
guest

0

分割していたほうが何かメリットがあるのでしょうか?

モデルをレンダリングする方法の中には,
「頂点毎に色を計算して,面の内側の色は頂点の色を用いて補間で決定する」
ものがあります.

そういう場合,
広い平面の内側に頂点が存在しない場合と,存在する場合では,レンダリング結果が変わってきます.
例えば,前者の場合,

   ●点光源 ━━━━━━━平面

みたいな状態でも平面のごく近くに点光源が存在することがわかるようなレンダリング結果にならないでしょう.
(内側にたくさん頂点があるほど,「平面の真ん中へんは明るく,端に行くほど暗くなる,円形に広がるグラデーション」な絵に近づく.)

投稿2020/06/26 01:51

fana

総合スコア11654

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

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

Sashimi_ShowYu

2020/06/26 02:05

補足ありがとうございます。 なるほど。 それだと、頂点数が多いほうが綺麗な映像になりやすそうですね。 特に、光源が近いほど。
ikadzuchi

2020/07/18 14:18

横からすいません、ちょっと気になったのですが、こちらグーローシェーディングに限った話でしょうか。それともフォンシェーディングでも違いは生じますか?
fana

2020/07/18 15:10 編集

あまり詳しくないのですが,この回答はグーローシェーディングを意識した回答,ということになるかと.(OpenGL1系とか) フォンシェーディングでは画素毎にライティング計算で色を決定をする(んだったと思う)ので,法線の補間に影響がない範囲(例えば広い平面の真ん中らへんとか)であれば,ポリゴン数を減らしてもレンダリング結果は変わらないのではないかと.(この質問の画像例だと変わり得るように思える:頂点の法線の持ち方次第で.)
fana

2020/07/18 15:06

(どっちが「グーロー」でどっちが「フォン」だったっけ? でググった.「グーロー」は「グロー」と習った記憶.)
ikadzuchi

2020/07/18 15:16

ありがとうございます。なるほど、やはりフォンシェーディングでは問題ありませんか。 (自分もグローで覚えたけれど最近のカナ表記は原語の音と一対一対応に近づけるのが流行りですねえ。)
fana

2020/07/18 15:27

例えば角の頂点が複数の面で共有されていているようなデータの場合にその頂点付近のレンダリングの具合にちょっと差が出るとかいうことにはなりそうですが,それを問題視するか否かですね.
ikadzuchi

2020/07/18 16:19

確かに、頂点や辺の付近を滑らかにレンダリングしている場合は、追加の頂点を持たない場合と比べて、補間されたピクセル単位の法線に違いが出てきそうですね。 最初に気にしていた部分とは違うのですが、考えてみるとこれも気にするべきかと思えてきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問