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

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

新規登録して質問してみよう
ただいま回答率
85.51%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

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

Unity

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

Q&A

1回答

1869閲覧

Unityでディスプレイスマップを使うとしたら・・?

Kitsutsuki

総合スコア24

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2016/04/17 08:46

少し気になった程度の事ですが質問させて下さい。
Unityでディスプレイスマッピングを使う場合はどの様な形で
実装しているのでしょうか?1例の概略といった所でも良いのですが
分かる方が居らっしゃいましたらお教え頂けませんでしょうか

特に気になっている所はディスプレイスマップのアニメーションです。
イメージとしてはマップをアニメーションさせて波のような動きを作る等です。

よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

UnityのStandardAssetsのTessellationSampleシーンが参考になります。
シェーダーのサンプルもあるので、それを元にシェーダーを作れば望まれているものが作れると思います。

イメージ説明
イメージ説明

以下のシェーダーはBumpedSpecularDisplacementのシェーダーの頂点シェーダーをサインカーブと使って波っぽくしたものです。
ご参考になればと思います。

Shader "Wave Tessellation" { Properties { _Color("Main Color", Color) = (1,1,1,1) _SpecColor("Specular Color", Color) = (0.5, 0.5, 0.5, 1) _Shininess("Shininess", Range(0.03, 1)) = 0.078125 _Parallax("Height", Range(0.0, 1.0)) = 0.5 _MainTex("Base (RGB) Gloss (A)", 2D) = "white" {} _BumpMap("Normalmap", 2D) = "bump" {} _ParallaxMap("Heightmap (A)", 2D) = "black" {} _EdgeLength("Edge length", Range(3,50)) = 10 _WavePhase("WavePhase", Range(0, 300.0)) = 30 _WaveHeight("WaveHeight", Range(0, 10.0)) = 0.1 } SubShader { Tags { "RenderType" = "Opaque" } LOD 800 CGPROGRAM #pragma surface surf BlinnPhong addshadow vertex:disp tessellate:tessEdge #include "Tessellation.cginc" struct appdata { float4 vertex : POSITION; float4 tangent : TANGENT; float3 normal : NORMAL; float2 texcoord : TEXCOORD0; float2 texcoord1 : TEXCOORD1; float2 texcoord2 : TEXCOORD2; }; float _EdgeLength; float _Parallax; float4 tessEdge(appdata v0, appdata v1, appdata v2) { return UnityEdgeLengthBasedTessCull(v0.vertex, v1.vertex, v2.vertex, _EdgeLength, _Parallax * 1.5f); } sampler2D _ParallaxMap; fixed _WavePhase; fixed _WaveHeight; void disp(inout appdata v) { float phase = _Time * _WavePhase; float4 wpos = mul(_Object2World, v.vertex); float offset = (wpos.x + (wpos.z * 0.2)) * 0.5; wpos.y = sin(phase + offset) * _WaveHeight; v.vertex = mul(_World2Object, wpos); float d = tex2Dlod(_ParallaxMap, float4(v.texcoord.xy,0,0)).a * _Parallax; v.vertex.xyz += v.normal * d; } sampler2D _MainTex; sampler2D _BumpMap; fixed4 _Color; half _Shininess; struct Input { float2 uv_MainTex; float2 uv_BumpMap; }; void surf(Input IN, inout SurfaceOutput o) { fixed4 tex = tex2D(_MainTex, IN.uv_MainTex); o.Albedo = tex.rgb * _Color.rgb; o.Gloss = tex.a; o.Alpha = tex.a * _Color.a; o.Specular = _Shininess; o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap)); } ENDCG } FallBack "Bumped Specular" }

イメージ説明

投稿2016/06/11 01:09

urahimono

総合スコア714

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問