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

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

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

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

Unity

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

Q&A

解決済

3回答

1428閲覧

スプライトのデプスバッファを実際とは違う位置情報を基準に生成したい(説明が難しいです)

paseri528

総合スコア7

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2021/04/05 06:59

#実現したいこと
Unity2020.2で、こちらのサイトの3項で紹介されている、ポケモンDPのように、3Dフィールドに2Dのスプライトをカメラへ向けて傾けて表示させる「ビルボード」という仕様でフィールドとキャラクターを作成しました。

しかし、当然ではあるのですが、この仕様の場合スプライトの傾きが一定を超えると下記の画像のようにフィールドに近づいた時にめりこんでしまいます。

ng1
ng2

キャラクターのBoxColliderを傾いている所まで大きくすればめりこむ前に衝突判定が起こり阻止できるのですが、それだとキャラクターの背後の当たり判定が見た目より大きくなりすぎてしまい違和感があります。Render Queueをいじるのも違和感が出てしまいます。

そこで、描画順について色々と調べた所、描画順はデプスバッファを基準にしているということでした。
なので、そのデプスバッファを編集することができればよいのではと思いました(デプスバッファをいじれるのかもよくわかっていませんが)
イメージとしては、下記の画像の黄色線の傾き(90度)の位置での深度情報を算出し、それを実際の傾いている所のデプスバッファに上書き(?)するという感じです。
(分かりづらくてすみません)
ng3

このようなことは可能なのでしょうか。また、他に解決策などありましたらご教授いただければ嬉しいです。

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

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

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

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

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

guest

回答3

0

ベストアンサー

描画するパスとデプスバッファにいい感じの値を書き込むパスを分ければできそうな気はします。
しかしそれより、直立かつ「カメラから見た時正面向きと同じ形に見える」ような形(つまり上が狭い台形)に変形させてやるのが楽だと思います。
具体的な変換行列はすぐには思いつきませんが、たぶんそう難しくないと思います。

投稿2021/04/05 16:55

ikadzuchi

総合スコア3047

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

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

paseri528

2021/04/06 19:26

ありがとうございます!確かにそれならいけそうな気がします!シェーダでスプライトの頂点を台形にしてからデプスバッファに書き込んでみます!
guest

0

やりたい事を実現するのは無理だと思います。
デプスバッファは単純に深度を表すもので3Dオブジェクトでも同じ位置に描画したものを撮影するとチラつきがおきます。それを3Dの世界ではZファイティングって言ったりします。

有名ばゲームでも、オブジェクトにめり込みそうな場面では下記のような対策が取られています。

  • 諦めてめり込ます
  • カメラの俯瞰で撮影している位置と角度を調整する
  • 違うアングルから撮影する
  • 侵入禁止にする

など

個人的な体感では現代の最新ゲームでもプレイに支障が無い場合はめり込ます選択をするのがほとんどだと思います。

今回の件に当てはめて考えると

  • 諦めてめり込ます -> 3Dならありだけど、2Dのめり込み方は不自然すぎる
  • カメラの俯瞰で撮影している位置と角度を調整する -> 俯瞰を許容できる程度まで浅くするはありかも
  • 違うアングルから撮影する -> PCならあり、スマホならなし、スマホゲーしかしない人には慣れが必要な気がします。
  • 侵入禁止にする -> 初プレイ時はこれ以上いけないんかいって思いそうだけどすぐ慣れそうでもある

といった形です。その他にはキャラクターを常に最前面に表示するとめり込みは無くなりますが、それは考えて無いですよね?もしそれでも良ければやり方は何通りかあるので聞いてください。

投稿2021/04/05 09:33

IShix

総合スコア1729

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

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

paseri528

2021/04/06 19:27

やっぱり難しいんですね。。最前面への表示だと色々と不都合が出そうなので考えていません。ご教授頂きありがとうございます!
guest

0

Unityは詳しくないのですがこのあたりの情報でどうにかなりそうな気がします。
Unityでオブジェクトの描画順を変更する方法

投稿2021/04/05 09:12

tatamyiwathy

総合スコア1045

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

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

paseri528

2021/04/06 19:29

ありがとうございます。参考にさせて頂きます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問