🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Unity3D

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

Unity

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

Q&A

1回答

2912閲覧

【Unity】Canvasで奥行きを考慮した線を引きたい

YUKI___

総合スコア4

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2019/11/26 14:04

前提・実現したいこと

ワールド座標(モデルのボーン位置)をスクリーン座標に変換して、
変換した座標を使ってランタイムでCanvasに線を引くということをしていました。

結果が以下の画像で、黒い線が変換した座標を使って引いた線です。
テストでユニティちゃんの両腕のボーン位置をスクリーン座標に変換しています。
イメージ説明

次のステップアップとして、
以下の画像のように、奥行きを考慮した線を引きたいです。(画像編集しました。)
イメージ説明

Canvasに奥行きを考慮した線を引くにはどのような実装をすればよろしいでしょうか。
「Canvasじゃできないよ!」という回答もお待ちしています。

補足情報(FW/ツールのバージョンなど)

Unityのバージョンは、 2019.2.11
CanvasのRenderModeは、ScreenSpace - Overlay
Canvasに線を引くプログラムはこちらを引用しました。
https://teratail.com/questions/109826

念のためデプス画像を貼ります。
イメージ説明

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

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

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

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

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

guest

回答1

0

前後関係を考慮して線を引くには、ユニティちゃん側の奥行きだけでなく線の奥行きも必要なはずです。ですが、あちらの回答に例示しましたLineStripは2Dの線を引くことを想定したものなので、あれを使って実現したいとなるとスクリプトの改造が必要になりそうです。

Canvas上にLineStripで描画するのではなく、LineRendererによる方法なら適しているように思いますが、いかがでしょうか?
LineRendererの線は三次元空間上の線なので奥行きも持っており、デプステストを行うタイプのマテリアルをセットしてやれば正しく描画されそうです。ただし、ユニティちゃんの関節の座標そのものを使うと線が腕に埋もれてしまいそうですので、カメラの方向へ少しずらしてやらないといけないかもしれません。

投稿2019/11/26 23:22

Bongo

総合スコア10811

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問