LRTKレフィクシア株式会社

点群OBJの複数MTL参照で材質が欠ける原因と5つの修正法

点群OBJとMTLの参照関係を理解する

点群OBJをアップロードした際に、形状や点の位置は表示されているものの、一部の色が消える、特定の範囲だけ灰色になる、複数ある材質のうち一部しか反映されないといった問題が起こることがあります。元の作成環境では正常に見えていた場合でも、アップロード先では同じように表示されるとは限りません。

この問題を正しく切り分けるには、OBJファイルとMTLファイルがそれぞれ何を担当しているのかを理解する必要があります。

OBJは、頂点座標、面、線、点、グループなどの三次元形状を記録できるテキスト形式です。一方、色、反射特性、透明度、テクスチャ画像などの材質情報は、一般にMTLファイルへ分けて記録されます。

OBJファイル内では、mtllibという記述によって使用するMTLファイルを指定します。また、形状のどの部分にどの材質を割り当てるかは、usemtlという記述によって示されます。

MTLファイル側では、newmtlの後ろに材質名を記述し、その材質の基本色や画像参照などを定義します。つまり、OBJ内のusemtlに記載された名称と、MTL内のnewmtlに記載された名称が正しく対応していなければ、アップロード先は材質を適用できません。

さらに、テクスチャ画像を使用している場合は、OBJからMTL、MTLから画像という二段階の参照が成立している必要があります。MTLは見つかっていても、MTLから参照される画像が見つからなければ、基本色だけが表示されたり、白色や灰色に置き換えられたりすることがあります。

複数のMTLファイルを使用する点群OBJでは、この参照関係がさらに複雑になります。OBJ内に複数のmtllibが記述され、各MTLに複数の材質が定義されていると、ファイル名の不一致、材質名の重複、読み込み順序の違い、相対パスのずれなどが発生しやすくなります。

また、OBJは面を持つ三次元モデルだけでなく、頂点のみを記録した点群として利用されることもあります。ただし、MTLによる材質の割り当ては、基本的に面やグループを対象として解釈されることが多く、頂点だけの点群に対して同じように反映されるとは限りません。

そのため、点群OBJアップロード後に色が欠けた場合は、単純にMTLが壊れていると判断するのではなく、OBJが点だけで構成されているのか、面を含んでいるのか、色がMTLで管理されているのか、頂点ごとの属性として保存されているのかを確認することが重要です。

複数MTL参照で材質が欠ける主な原因

複数MTL参照で材質が欠ける原因は、一つとは限りません。複数の小さな不整合が重なり、特定の環境だけで表示不良が起こることもあります。

最初に疑うべきなのは、OBJに記述されているMTLファイルの一部が、アップロード先で読み込まれていない状態です。OBJ内には複数のmtllibが存在していても、アップロード先の処理方法によっては、最初のMTLだけが読み込まれ、二つ目以降が無視されることがあります。

たとえば、一つ目のMTLに地面の材質、二つ目のMTLに構造物の材質が定義されている場合、地面だけが正常に表示され、構造物が既定色になることがあります。このような症状では、形状データ自体は読み込まれているため、OBJの破損ではなくMTL参照の問題を優先して確認します。

ファイル名の不一致もよくある原因です。OBJ内にmaterial_02.mtlと記述されているのに、実際のファイル名がmaterials_02.mtlになっていれば、そのMTLは読み込まれません。大文字と小文字、全角と半角、空白、拡張子の違いなども確認が必要です。

作成した端末では大文字と小文字を区別せずに読み込めたとしても、アップロード先では別のファイルとして判定される場合があります。Material.mtlとmaterial.mtlは、環境によって同じファイルとして扱われる場合と、異なるファイルとして扱われる場合があります。

OBJ内のusemtlとMTL内のnewmtlが一致していないことも、材質欠けの主要な原因です。たとえば、OBJにusemtl ground_01と記述されているのに、MTLにはnewmtl ground01と定義されていれば、下線の有無によって別の材質名として処理されます。

複数MTLで同じ材質名が使用されている場合も注意が必要です。それぞれのMTLにnewmtl defaultという同名の定義があると、どちらの定義が採用されるかが読み込み側の処理順序に左右されます。先に読み込まれた定義が残る場合もあれば、後から読み込まれた定義で上書きされる場合もあります。

さらに、OBJ、MTL、画像の保存階層が変わったことで、相対パスが崩れている可能性があります。作成時には別フォルダにあったファイルをZIPへまとめた際、OBJからMTLへの位置関係や、MTLから画像への位置関係が変わると、参照先を見つけられなくなります。

文字コードや改行方法、ファイル名に含まれる日本語や特殊記号が影響する場合もあります。材質名が文字化けすると、見た目では同じ名称に思えても、内部では異なる文字列として処理されます。

加えて、MTLに記載されたすべての材質設定が、アップロード先で再現されるとは限りません。基本色は反映されても、透明度、反射、特殊な画像指定などが無視されることがあります。この場合は材質が完全に欠けているのではなく、一部の設定だけが対応していない可能性があります。

修正法1:OBJに記述されたMTL参照を整理する

最初の修正法は、OBJファイルに記述されたmtllibを整理し、実際に同梱されているMTLファイルと照合することです。

まず、元データを直接編集するのではなく、OBJ、MTL、画像を含むフォルダ一式を複製します。検証用のコピーを作っておけば、編集によって状態が悪化した場合でも元に戻せます。

次に、OBJファイルをテキストとして開き、mtllibを検索します。複数の記述が見つかった場合は、記載されたすべてのMTLファイル名を確認します。

OBJ内に記述されたファイル名と、実際のMTLファイル名は完全に一致させます。大文字と小文字、拡張子、空白、下線、ハイフンなども含めて確認してください。見た目が似ているだけでは不十分です。

MTLファイルがアップロード用フォルダに存在する場合でも、その内容が正しいとは限りません。同名の古いMTLを誤って含めているケースや、別のOBJから出力されたMTLを入れているケースがあります。各MTLを開き、必要な材質名がnewmtlとして定義されているかを確認します。

OBJ内に複数行のmtllibがある場合は、アップロード先がその記述方法を正しく処理できるかも問題になります。複数行の参照に対応していない可能性がある場合は、後述するMTL統合を検討します。

また、一つのmtllib行に複数のMTLファイル名を並べた形式が使われている場合もあります。この形式を正しく処理できるかどうかは、読み込み環境によって異なる可能性があります。互換性を優先するのであれば、一つのOBJから一つのMTLだけを参照する構成へ整理した方が確認しやすくなります。

ZIPを作成する際には、作成元のフォルダだけでなく、完成したZIPの中身を開いて確認します。OBJに書かれているMTLがすべて入っているか、ZIP内でファイル名が変わっていないか、不要な上位フォルダが追加されていないかを確認してください。

一部のMTLだけが読み込まれていないと疑われる場合は、小さな検証用OBJを用意し、MTLを一つずつ組み合わせてアップロードすると原因を絞りやすくなります。一つ目のMTLでは正常に表示され、二つ目を追加した時点で材質が欠けるのであれば、二つ目のMTLまたは名称の競合に原因がある可能性が高くなります。

修正法2:usemtlとnewmtlの材質名を一致させる

二つ目の修正法は、OBJ内のusemtlと、MTL内のnewmtlを完全に一致させることです。

OBJ内のusemtlを検索し、使用されている材質名を確認します。同じ名称が何度も使われている場合は、一度だけ記録して整理しても構いません。ただし、どの範囲でどの材質が使われているかを把握するため、記述位置も確認しておくと切り分けに役立ちます。

次に、複数のMTLファイルを開き、各usemtlに対応するnewmtlが存在するかを確認します。対応する定義がどこにもなければ、その材質を使用している範囲は正常に表示されない可能性があります。

名称を比較するときは、英字の大文字と小文字、数字、下線、ハイフン、空白まで確認します。surface_01とSurface_01、surface01、surface_1は、同じ意味で付けた名称でも別の文字列です。

材質名の先頭や末尾に不要な空白が入っている場合もあります。画面上では気付きにくいものの、コピーや書き出しの過程で余分な空白が付くと、正しく照合されない可能性があります。

日本語や全角記号を含む材質名は、作成環境では利用できても、アップロード後に文字化けすることがあります。互換性を重視する場合は、半角英数字と下線を中心とした材質名に変更します。

材質名を変更するときは、MTL側のnewmtlだけを変更してはいけません。OBJ内の対応するusemtlも同じ名称へ変更する必要があります。片方だけを変えると、新しい参照切れが発生します。

また、OBJの途中で材質指定が欠けていないかも確認します。新しいグループや面のまとまりが始まる前にusemtlが記述されていない場合、前の材質が引き継がれたり、材質なしとして表示されたりする可能性があります。

特定の範囲だけが灰色になる場合は、その範囲を構成する面や点の直前に、意図したusemtlが記載されているかを確認します。

ただし、頂点だけで構成された点群OBJでは、usemtlが正しく記述されていても、表示側が点に対するMTL適用へ対応していない場合があります。名称を修正しても結果が変わらない場合は、材質参照ではなく、点の色情報をどの方法で保存しているかを確認する必要があります。

修正法3:重複する材質名を一意の名称へ変更する

三つ目の修正法は、複数のMTLファイルに存在する重複材質名を、一意の名称へ変更することです。

複数のデータを結合したOBJでは、別々に作成されたMTLが同じ材質名を持っていることがあります。特に、default、material、surface、material_0のような一般的な名称は重複しやすくなります。

たとえば、地形用のMTLと構造物用のMTLの両方にnewmtl surfaceがある場合、OBJ側のusemtl surfaceだけでは、どちらの定義を使うべきか区別できません。

作成環境ではオブジェクト単位でMTLを処理しているため正常に見えても、アップロード時にすべての材質定義が共通の一覧へ読み込まれると、名称が競合する可能性があります。

同名の材質が見つかった場合は、まず定義内容を比較します。基本色、画像参照、透明度などがすべて同じであれば、一つの材質へ共通化できる可能性があります。

一方、名称は同じでも定義内容が異なる場合は、別の材質名に変更します。地形用であればterrain_surface_01、構造物用であればstructure_surface_01のように、用途が分かる接頭辞を付けると管理しやすくなります。

名称は半角英数字と下線を基本とし、複数のファイルを結合しても重複しにくい規則を設けます。範囲名やデータ区分、連番を組み合わせる方法も有効です。

名称を変更する際は、MTL内のnewmtlとOBJ内のusemtlを同時に変更します。OBJ内に同じusemtlが複数回登場する場合は、すべての記述を漏れなく修正します。

テキストの一括置換を使用するときは、似た名前の別材質まで変更しないよう注意が必要です。たとえば、material_1を変更しようとしてmaterial_10の一部まで書き換えると、別の参照エラーが発生します。

修正後は、すべてのusemtlに対応するnewmtlが一つだけ存在する状態を目指します。同じ材質名が複数のMTLに残っていないことも確認してください。

材質名を一意にすることで、読み込み順序に依存した上書きを防ぎやすくなり、どの材質がどの範囲へ使われているかも追跡しやすくなります。

修正法4:ファイル階層と相対パスを単純化する

四つ目の修正法は、OBJ、MTL、テクスチャ画像のフォルダ階層を単純化し、相対パスのずれを解消することです。

作成時のフォルダ構成をそのままアップロードしようとすると、深い階層や絶対パスが残っている場合があります。作成した端末の保存先を示す絶対パスは、アップロード先では利用できません。

たとえば、MTL内の画像参照に、特定の端末だけで有効な保存場所が記載されている場合、アップロード先は画像を見つけられません。画像が欠けると、材質全体が白色や灰色になったり、基本色だけが表示されたりします。

アップロード用データでは、OBJ、MTL、必要な画像を同じフォルダへ集める構成が確認しやすくなります。この構成であれば、OBJのmtllibにはMTLのファイル名だけを記述し、MTLの画像参照にも画像のファイル名だけを記述できます。

画像が多く、同じフォルダへの集約が難しい場合は、OBJとMTLを最上位に置き、画像だけを一段下のフォルダへまとめる方法があります。ただし、アップロード先がZIP内のサブフォルダを保持し、相対パスを正しく処理できることが前提です。

対応状況が分からない場合は、最初にすべてを同一階層へ置いた小規模なテストデータで確認します。単純な構成で正常に表示されれば、元の階層またはパス記述に問題があった可能性が高くなります。

ファイル名やフォルダ名には、半角英数字、下線、ハイフンなどを使用し、日本語、全角空白、特殊記号を避けると互換性を高めやすくなります。

同じ画像名が複数のフォルダに存在する場合も注意が必要です。階層を一つへまとめる際に同名ファイルを上書きすると、MTLが意図しない画像を参照することがあります。

同名画像がある場合は、材質名と同様に一意のファイル名へ変更し、MTL内の画像参照も合わせて修正します。

ZIPを作成するときは、ZIPを開いた直後にOBJ、MTL、必要な画像が確認できる構成を基本とします。最上位に作業用フォルダがあり、その中に出力フォルダがあり、さらにその中にOBJがあるような深い構造は、読み込み時の基準位置が分かりにくくなります。

階層を整理した後は、別の場所にフォルダをコピーするか、ZIPを別の場所へ展開して表示を確認します。元の保存場所から離しても正常に読み込めれば、絶対パスへの依存を解消できている可能性が高くなります。

修正法5:複数MTLを統合して最小構成で再出力する

五つ目の修正法は、複数のMTLファイルを一つへ統合し、必要に応じて最小構成から再出力することです。

アップロード先が複数MTL参照を十分に処理できない場合、OBJやMTLの内容が正しくても、一部の材質が無視される可能性があります。この場合、一つのOBJから一つのMTLだけを参照する構成へ変更すると、問題を回避しやすくなります。

統合前には、すべてのMTLに記載されたnewmtlを確認し、重複する材質名を整理します。異なる定義に同じ名前が付いている場合は、先に一意の名称へ変更します。

名称の整理が終わったら、各MTLの材質定義を一つのファイルへまとめます。OBJ内のmtllibは、統合後のMTLファイルだけを参照するように修正します。

古いmtllibが残っていると、不要なMTLを探し続けたり、同じ材質を重複して読み込んだりする可能性があります。統合後は、参照先を一つに限定してください。

MTLを統合しても、画像参照は自動的には直りません。各材質が指定している画像ファイルの名称と保存場所を確認し、現在のフォルダ構成に合わせます。

統合によって一つのMTLが大きくなった場合でも、アップロード先から見ると参照先が明確になり、複数ファイルの読み込み順序による問題を減らせます。

それでも材質が欠ける場合は、最小構成のテストデータを作ります。形状の一部だけを残したOBJ、一つのMTL、一つの材質、必要であれば一つの画像という構成にします。

最小構成で材質が表示されれば、OBJとMTLの基本的な読み込みには問題がないと判断しやすくなります。そこから材質、画像、形状を少しずつ追加し、どの段階で表示が崩れるかを確認します。

最小構成でも材質が表示されない場合は、mtllib、usemtl、newmtlの名称、文字コード、点と面の構成、アップロード先が対応する属性など、より基本的な部分を見直します。

特に、頂点だけを含む点群OBJでは、MTLが存在していても点へ材質が適用されないことがあります。元データに色情報がある場合は、頂点ごとの色として保存されているのか、面の材質として保存されているのかを確認します。

再出力する場合は、不要な材質を除外し、材質名を単純化し、OBJ、MTL、画像を相対パスでまとめられる設定を選びます。

大容量データを毎回すべて再出力すると確認に時間がかかるため、まず小さな範囲で書き出し条件を検証します。正常に表示できる設定が確定してから、全体データを同じ条件で出力するとやり直しを減らせます。

点群OBJアップロード前に行う確認手順

点群OBJアップロード前の確認では、形状、材質、ファイル構成を分けて調べることが重要です。

最初に、OBJファイルが途中で切れていないかを確認します。ファイル容量が想定より極端に小さい場合や、書き出し処理が途中で終了している場合は、材質以前に形状データが不足している可能性があります。

次に、OBJ内のmtllibをすべて確認し、記述されたMTLがアップロード用フォルダに存在するかを照合します。ファイル名は大文字と小文字、空白、記号、拡張子まで一致させます。

その後、OBJ内のusemtlを確認し、すべての材質名に対応するnewmtlがMTL内に存在するかを確認します。

複数MTLを使用している場合は、同じnewmtl名が複数のファイルに含まれていないかを調べます。重複がある場合は、定義内容を比較したうえで統合または名称変更を行います。

MTL内で画像を参照している場合は、すべての画像ファイルが存在することを確認します。画像名に日本語や特殊記号が含まれていないか、同名画像が重複していないか、相対パスが現在のフォルダ構成と合っているかも確認します。

OBJ、MTL、画像を別のフォルダへコピーし、元の保存場所から離れた状態でも読み込めるかを試す方法も有効です。別の場所で表示できなければ、元の絶対パスや作業環境に依存している可能性があります。

アップロード用ZIPを作成した後は、ZIP内の構造を確認します。必要なMTLや画像が不足していないか、不要な上位フォルダが追加されていないか、同じ名前のファイルが置き換わっていないかを見ます。

可能であれば、ZIPを別の場所へ展開し、展開後のOBJからMTLと画像へ到達できるかを確認します。作成元フォルダでは正常でも、ZIP化によって構成が変わる場合があるためです。

本番の大容量データをアップロードする前には、同じ材質構成を持つ小容量の検証データを使用します。小容量データが正常に表示されることを確認できれば、材質参照の設定と、容量や処理負荷の問題を分けて判断しやすくなります。

アップロード前の確認結果は、簡単な記録として残しておくと便利です。どのOBJがどのMTLを参照しているのか、材質名を変更したか、MTLを統合したか、画像名を変更したかを残しておけば、再出力や差し替え時のミスを減らせます。

アップロード後の症状から原因を切り分ける方法

アップロード後に材質が欠けた場合は、どのように欠けているかを観察すると原因を絞りやすくなります。

全体が灰色または白色になる場合は、MTLが一つも読み込まれていない可能性があります。OBJ内のmtllib、MTLの同梱状況、ZIPの階層、ファイル名の一致を優先して確認します。

一部の範囲だけが灰色になる場合は、その範囲で使われているusemtlと、対応するnewmtlを確認します。材質名の不一致、定義の欠落、同名材質の競合などが考えられます。

複数のMTLのうち、一つ目に定義された材質だけが表示される場合は、アップロード先が二つ目以降のMTLを読み込んでいない可能性があります。この場合は、一つのMTLへの統合を優先して試します。

基本色は表示されるものの、画像だけが欠ける場合は、MTLから画像への参照に問題がある可能性が高くなります。画像ファイルの不足、相対パスのずれ、ファイル名の文字化け、画像形式の対応状況などを確認します。

色は表示されるものの、意図しない透明状態になる場合や、極端に暗く表示される場合は、材質の一部の値が異なる方法で解釈されている可能性があります。アップロード用のMTLでは、特殊な設定を減らし、基本色や一般的な画像参照を中心とした構成へ簡略化すると切り分けやすくなります。

材質が別の範囲へ適用されている場合は、重複する材質名が上書きされている可能性があります。複数MTL内のnewmtlを照合し、同名の定義がないかを確認します。

特定の方向から見たときだけ一部が消える場合は、材質ではなく面の向きや裏面表示の問題である可能性もあります。形状を回転させ、同じ部分が常に消えているのか、見る方向によって変化するのかを確認します。

点は表示されるものの色が付かない場合は、点の色情報がMTLではなく、別の属性として保存される必要がある可能性があります。OBJに面が含まれておらず頂点だけで構成されている場合は、MTL修正だけでは解決しないことがあります。

アップロード自体が失敗する場合は、材質参照だけでなく、ファイル容量、ZIP構造、文字コード、ファイル名、データの途中欠損なども確認します。

修正を試す際は、一度に複数の条件を変えないことが重要です。MTL統合、材質名変更、画像名変更、階層変更を同時に行うと、どの修正が有効だったのか分からなくなります。

一つの条件を修正するたびに別名の検証データを作り、アップロード結果を比較します。変更前後を追跡できる状態にしておけば、正常な構成へ戻すことも容易になります。

大容量の点群OBJで材質欠けを防ぐ運用

大容量の点群OBJでは、OBJ本体だけでなく、MTLや画像の数も増えやすくなります。ファイル数が増えるほど、手作業による同梱漏れや名称重複が起こりやすくなるため、アップロード前の作業を標準化することが重要です。

まず、作業用データとアップロード用データを分けて管理します。編集途中のOBJ、古いMTL、使用していない画像が同じフォルダに混在すると、どのファイルをZIPへ含めるべきか判断しにくくなります。

アップロード用フォルダには、実際に使用するOBJ、MTL、画像だけを複製します。不要なファイルを除くことで、同名ファイルの誤同梱や、古い材質定義の読み込みを防ぎやすくなります。

材質名には、あらかじめ命名規則を設けます。単純な連番だけでは、別のデータを統合した際に重複しやすくなります。データ区分、対象範囲、材質の種類、連番などを組み合わせ、一意性を確保します。

ファイル名にも同じ考え方を適用します。OBJ、MTL、画像の対応が分かる名称を付けると、参照先の誤りを見つけやすくなります。ただし、名称を長くしすぎたり、空白や特殊記号を多用したりすると互換性の問題が起こりやすいため、半角英数字を中心に簡潔にします。

複数MTLを使用する必要がない場合は、アップロード用データだけ一つのMTLへ統合する運用も有効です。編集用の元データでは複数MTLを維持し、アップロード用では統合版を作ることで、編集のしやすさと読み込みの安定性を分けて考えられます。

大容量データをアップロードする前には、同じMTL構成を使用した小容量の検証用OBJを作成します。検証用OBJで材質が正常に表示されれば、参照関係そのものは成立していると判断しやすくなります。

一方、小容量データは成功するのに本番データだけ失敗する場合は、ファイル容量、材質数、画像数、処理時間など、規模に関係する条件を確認します。

修正版を作る際は、元ファイルを上書きせず、版を分けて保存します。どの版でMTLを統合したのか、どの版で材質名を変更したのか、どの版を実際にアップロードしたのかを追跡できるようにします。

アップロードが完了した後も、最初に見える範囲だけで判断してはいけません。データ全体を移動、拡大、回転し、異なる範囲の材質が表示されているかを確認します。

材質数が多い場合は、代表的な色や画像が使われている場所を事前に把握しておくと確認しやすくなります。地面、構造物、設備、標識など、種類の異なる範囲を確認し、一部のMTLだけが欠けていないかを見ます。

点群データの取得からOBJへの変換、MTLの生成、ZIP作成、アップロードまでを複数の担当者が行う場合は、引き渡すファイルだけでなく、参照関係も共有する必要があります。OBJだけを渡してMTLや画像が不足すると、後工程では材質を再現できません。

データの引き渡し時には、OBJが参照するMTLの数、画像の有無、フォルダ構成、材質名変更の有無などを記録しておくと、アップロード担当者が確認しやすくなります。

まとめ

点群OBJの複数MTL参照で材質が欠ける場合は、OBJ本体の破損だけを疑うのではなく、OBJからMTL、MTLから画像へ続く参照関係を順番に確認することが重要です。

代表的な原因には、一部のMTLが読み込まれていないこと、OBJ内のusemtlとMTL内のnewmtlが一致していないこと、複数MTLで材質名が重複していること、相対パスやフォルダ階層が崩れていること、文字コードや材質記述に互換性の問題があることが挙げられます。

修正時は、まずOBJ内のmtllibと実際のMTLファイルを照合します。次に、すべてのusemtlに対応するnewmtlが存在するかを確認し、重複した材質名を一意の名称へ変更します。

そのうえで、OBJ、MTL、画像の階層を単純化し、絶対パス、日本語名、特殊記号など、環境差の影響を受けやすい要素を減らします。

複数MTLの読み込みが安定しない場合は、材質名の競合を解消したうえで、一つのMTLへ統合する方法が有効です。それでも解決しない場合は、OBJ一つ、MTL一つ、材質一つという最小構成を作り、正常に表示できる条件を確認します。

点群OBJアップロードの不具合は、複数の項目を一度に変更するより、一つずつ修正して結果を比較する方が効率的です。変更ごとにファイルを分け、正常な版へ戻せる状態を維持してください。

また、OBJが頂点だけで構成された点群である場合は、MTLによる材質が点へ適用されない可能性があります。名称やパスを修正しても色が戻らないときは、色が面の材質として保存されているのか、頂点ごとの属性として保存されているのかを確認する必要があります。

現場で取得した三次元データを継続的に活用するには、計測時点からアップロード後の利用方法までを見通し、ファイル形式、座標、色情報、付属ファイルの管理方法を整理しておくことが大切です。現場での計測から点群データの活用までを効率化したい場合は、LRTK Phoneを起点とした運用も検討できます。

現場を3Dで残して、あとから測る。
実際の画面と動画で使い方を確認できます。

LRTK Phoneの使い方・実例を見る
資料請求導入相談
現場をスマホで3DスキャンLRTK Phone実例を見る