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

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

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

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

Unity

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

Q&A

解決済

4回答

1788閲覧

unity 雲の上のステージを作るアイデアをください。

ryo0o0o

総合スコア9

Unity3D

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

Unity

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

1グッド

2クリップ

投稿2020/01/28 00:46

編集2020/01/29 07:35

実現したいこと

写真のような雲の上のステージを雲の動きも付けて作りたいです。
イメージ説明

試したこと

skyboxを回してみたが太陽も回ってしまいダメだった。skyboxを雲と空、二つ適応することはできなかった。

試そうとしてること

雲と空を分けてskyboxのような感じで表示したい。
###教えていただきたいこと
どうすれば、写真のようなステージを作れるか。
試そうとしていることはどうすればできるか。

初心者なので、どんな回答でもありがたいです。よろしくお願いします。

###途中経過
Bongoさんから教えていただいた方法で上空の雲を動かすことができました。ありがとうございます。
下の雲はパーティクルで作ってみようと思います。
イメージ説明

Hawn👍を押しています

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

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

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

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

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

guest

回答4

0

ベストアンサー

私からも一案として、ご質問者さんの「空と雲の2つのスカイボックス」のアイディアを検討してみました。
以前見かけました他の方のご質問に「Unityのシェーダーで、透明部分が黒く表示されてしまう。」というものがあり、この時と同様に2つのカメラを用意してやって、それぞれが空背景・雲背景を担当するようにできるかもしれないと考えました。

まず、雲担当のスカイボックスは半透明に対応する必要があるでしょうが、デフォルトのスカイボックス用シェーダーはアルファを無視するようです。そこでビルトインシェーダーをコピーして一部改変したものを用意することにしました。
DefaultResourcesExtra/Skybox-Cubed.shaderをベースに、ファイル名をSkybox-Alpha.shaderとして下記部分を変更しました(コード中にコメントを入れた部分)。

ShaderLab

1// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) 2 3// 区別がつくようにシェーダー名を変更 4Shader "Skybox/Cubemap (Alpha)" { 5Properties { 6 // アルファも利用するようにしたのに合わせ、_Tintのデフォルトのアルファを1に変更 7 _Tint ("Tint Color", Color) = (.5, .5, .5, 1) 8 [Gamma] _Exposure ("Exposure", Range(0, 8)) = 1.0 9 _Rotation ("Rotation", Range(0, 360)) = 0 10 [NoScaleOffset] _Tex ("Cubemap (HDR)", Cube) = "grey" {} 11} 12 13SubShader { 14 Tags { "Queue"="Background" "RenderType"="Background" "PreviewType"="Skybox" } 15 Cull Off ZWrite Off 16 17 Pass { 18 // Blend指定を追加 19 Blend SrcAlpha OneMinusSrcAlpha 20 21 CGPROGRAM 22 #pragma vertex vert 23 #pragma fragment frag 24 #pragma target 2.0 25 26 #include "UnityCG.cginc" 27 28 samplerCUBE _Tex; 29 half4 _Tex_HDR; 30 half4 _Tint; 31 half _Exposure; 32 float _Rotation; 33 34 float3 RotateAroundYInDegrees (float3 vertex, float degrees) 35 { 36 float alpha = degrees * UNITY_PI / 180.0; 37 float sina, cosa; 38 sincos(alpha, sina, cosa); 39 float2x2 m = float2x2(cosa, -sina, sina, cosa); 40 return float3(mul(m, vertex.xz), vertex.y).xzy; 41 } 42 43 struct appdata_t { 44 float4 vertex : POSITION; 45 UNITY_VERTEX_INPUT_INSTANCE_ID 46 }; 47 48 struct v2f { 49 float4 vertex : SV_POSITION; 50 float3 texcoord : TEXCOORD0; 51 UNITY_VERTEX_OUTPUT_STEREO 52 }; 53 54 v2f vert (appdata_t v) 55 { 56 v2f o; 57 UNITY_SETUP_INSTANCE_ID(v); 58 UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); 59 float3 rotated = RotateAroundYInDegrees(v.vertex, _Rotation); 60 o.vertex = UnityObjectToClipPos(rotated); 61 o.texcoord = v.vertex.xyz; 62 return o; 63 } 64 65 half4 frag (v2f i) : SV_Target 66 { 67 half4 tex = texCUBE (_Tex, i.texcoord); 68 half3 c = DecodeHDR (tex, _Tex_HDR); 69 c = c * _Tint.rgb * unity_ColorSpaceDouble.rgb; 70 c *= _Exposure; 71 72 // 出力する色のアルファ成分を_Texと_Tintの積にする 73 return half4(c, tex.a * _Tint.a); 74 } 75 ENDCG 76 } 77} 78 79 80Fallback Off 81 82}

メインカメラの子としてもう一つカメラを作り、子カメラはCulling MaskをNothing、Depthを-2とし、これにベースとなる背景を担当させることにしました。Audio Listenerも削除しています。

図1

一方、メインカメラのCameraコンポーネント自体の設定は特にいじらず、Skyboxコンポーネントを追加して、これに上記の半透明キューブマップシェーダーを使ったマテリアルをセットしました。

図2

この状態で前景側(背景なのに前景というのは変ですが、つまり雲側です)のマテリアルのRotationを操作して回してみると、下図のような描画結果になりました。前景だけが回っていることをアピールするため、テクスチャは派手なタイル模様にしています。

図3

ですがこの方式だと雲は無限遠にあるようなものですので、立体感には乏しいかもしれません。ha_wnさんやnskydivingさんの案のように三次元の雲にすればリアリティがありそうですし、雲を突き抜けて飛ぶような表現も可能そうですね。

投稿2020/01/28 22:00

Bongo

総合スコア10807

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

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

ryo0o0o

2020/01/28 22:40

わざわざやり方まで示してくださりとても参考になりました。ありがとうございます。組み合わせてやってみようと思います。
guest

0

標準機能であれば他の方の回答が良い方法だと思いますが、優れたアセットがある場合、それに頼るのも手です。

雲の場合、私はMassive Cloudsをお勧めしてます。有料アセットですが30ドルてすし、セールなら半額近くに下がることも。

Massive Clouds

レイマーチングによる高品質なボリュームシャドウが、古いものから最新のUniversal RPまでUnityのレンダリングシステムにきちんと対応してます。
お尋ねの動く雲は標準で備わってますし、雲のレイヤー積み重ねたり、擬似的な大気表現などにも使えます。また負荷と品質のバランスがとりやすく、モバイルでも十分動きます。

作者が日本人なので、日本語で質問投げられるのも気軽で良いです。

投稿2020/02/03 23:22

編集2020/02/03 23:24
neran

総合スコア47

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

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

ryo0o0o

2020/02/15 08:47

パーティクルでは限界があったので、massive clouds試してみます。ありがとうございます。
neran

2020/02/15 08:59 編集

旧来のレンダリングシステムからHDRPまで対応している素晴らしいアセットですが、それぞれ導入方法が違います。 旧来のレンダリングシステムならカメラコンポーネントやPPS、URPならRenderer Features、HDRPならCustom Passなどなど。日本語の丁寧なマニュアルがあります。 残念ながらサンプルシーンは旧来のレンダリングシステムでしかそのままでは完全に表示されないので、新規の3Dプロジェクトを作成して試した方が良いです。
guest

0

あまり難しく考えず、Terrain やポリゴンモデルでは実現できないでしょうか。

投稿2020/01/28 08:48

nskydiving

総合スコア6500

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

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

ryo0o0o

2020/01/28 22:40

回答ありがとうございます。試してみます。
guest

0

1.パーティクルで雲を発生させて敷き詰める
2.ボリュームレンダリングを使って雲を作る

初心者であれば1が良いかと思います。

投稿2020/01/28 08:23

編集2020/01/28 08:26
Hawn

総合スコア1222

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

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

ryo0o0o

2020/01/28 22:28

回答ありがとうございます。大変参考になりました。他の方のアイデアと組み合わせて、作ってみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問