コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
メッシュベイカー
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
'''メッシュベイカー'''([[英語]]:mesh baker)とは、[[3DCG]]において[[ドローコール]]を減らすべく、背景などに使用されるビルなどの複数の3Dモデルを、事前に「1つのモデル」に結合してしまう手法である。 ==概要== 100[[ポリゴン]]のモデルを100個表示したいとする。普通にやれば[[ドローコール]]は100回も発生する。そこで「100ポリゴンの100モデル」を事前に「10000ポリゴンの1モデル」に結合してしまえば[[ドローコール]]が1回で済む。 主に[[ハードウェアインスタンシング]]が使えない環境や、[[ハードウェアインスタンシング]]は使えるが形状の異なるモデルが多数存在する場合に有効である。 結合処理は[[CPU]]で行われる比較的重たい処理であるため、ゲームのビルド時に事前に結合しておいたり、またゲームを起動した一発目([[Now Loading]])で結合を行うのが定番である。このため基本的には「動かないもの」にしか使えない。主にマップ上の建築物などのように動かないモデル群に適用される。 ==インデックスバッファのサイズに注意== モデルを結合する際には[[ハードウェア]]的に「[[インデックスバッファ]]の最大サイズ」に注意すること。多くの環境ではインデックスバッファの最大サイズは「16ビット整数(最大値65535)」となっている。[[PC]]では32ビットが使えることもあるが、[[スマホ]]なんかも考慮する場合は16ビットで設計しておくのが無難である。 このような環境を考慮して65535インデックスの範囲内になるように結合して、最終的な取得は配列にするといい感じである。 <syntaxhighlight lang="csharp"> // 概略説明用の架空のソースコードである。 // 動かないよ。 class MashBaker { List<Model> _list; void Add(Model model) { var current = _list.LastOrDefault(); if (current == null) { current = new Model(); _list.Add(current); } // インデックスバッファのサイズ制限に注意 var ibcount = current.IndexBuffer.Count + model.IndexBuffer.Count; if (65535 < ibcount) { current = new Model(); _list.Add(current); } // モデルを結合する current.Merge(model); } Model[] ToModels() { return list.ToArray(); } } </syntaxhighlight><br /> ==関連項目== *[[ドローコール]] *[[ハードウェアインスタンジング]] *[[遅延レンダリング]] [[category: 3DCG]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
本文の横幅制限を有効化/無効化