質問編集履歴

3

テクスチャ3D適応後の調整の仕方についての質問を追記しました

2020/12/13 05:34

投稿

911RSR
911RSR

スコア13

test CHANGED
File without changes
test CHANGED
@@ -195,3 +195,35 @@
195
195
  texture3Dの適用には何か独特な手順が必要なのでしょうか。
196
196
 
197
197
  ご教示頂けますと幸甚です。
198
+
199
+
200
+
201
+ ***12/13追記
202
+
203
+ テクスチャ3Dを反映できました!ここまで本当にありがとうございます。
204
+
205
+
206
+
207
+ あと一歩、いや1.5歩のように思います!
208
+
209
+
210
+
211
+ 例のsphereの合成体にこのテクスチャ3Dを反映したところ、以下の結果が得られました。
212
+
213
+ ![現状](2fb53d3278520413dddb3d889bc4a97a.jpeg)
214
+
215
+
216
+
217
+ 理想的には、下の図の緑の部分のように、例えばinspecterで表示される地球儀マップ状のテクスチャを、そのままsphereの合成体に貼り付けたいと思っています。
218
+
219
+ ![緑の部分を切り抜いて](bf9880f371647eb13a57ade7ed792bb6.jpeg)
220
+
221
+ ↓理想とする結果
222
+
223
+ ![![理想の結果](c5371e5efc5be9f7e6d2ab411587aa65.jpeg)](a81890058cee08fbc56ca66966815923.jpeg)
224
+
225
+
226
+
227
+ 現状ではsphere上にテクスチャ3Dが繰り返し表示され、また目的の場所が切り取られないというのが問題に思いますが、スクリプトを改変することで理想は達成できそうでしょうか。
228
+
229
+ 自動的に必要な部分のuv座標を計算させ、リアルタイムに反映させるのは難しいように思いますので、少なくともtiling等をいじって画像が何列もダブって表示されるのだけでも解消しようと試みたのですが、tilingを0.1や10等に変えてもテクスチャ自体には変化が起こりませんでした。

2

生成されたテクスチャの適用についての質問を追記させて頂きました。

2020/12/13 05:34

投稿

911RSR
911RSR

スコア13

test CHANGED
File without changes
test CHANGED
@@ -46,4 +46,152 @@
46
46
 
47
47
 
48
48
 
49
+ 12/10追記
50
+
51
+ 無事Texture3Dは生成できたのですが、オブジェクトへの適用でつまずいております。。
52
+
53
+
54
+
55
+ 引き続き上記、凹みさんのページを参照し、Texture3Dを参照するシェーダのスクリプトを書いたのですが、オブジェクトにドラッグ&ドロップできません。。
56
+
57
+
58
+
59
+ ```C#
60
+
61
+ Shader "VolumeRendering/3D Texture"
62
+
63
+ {
64
+
65
+
66
+
67
+ Properties
68
+
69
+ {
70
+
71
+ _Volume("Volume", 3D) = "" {}
72
+
73
+ }
74
+
75
+
76
+
77
+ CGINCLUDE
78
+
79
+
80
+
81
+ #include "UnityCG.cginc"
82
+
83
+
84
+
85
+ struct appdata
86
+
87
+ {
88
+
89
+ float4 vertex : POSITION;
90
+
91
+ };
92
+
93
+
94
+
95
+ struct v2f
96
+
97
+ {
98
+
99
+ float4 vertex : SV_POSITION;
100
+
101
+ float3 uv : TEXCOORD0;
102
+
103
+ };
104
+
105
+
106
+
107
+ sampler3D _Volume;
108
+
109
+
110
+
111
+ v2f vert(appdata v)
112
+
113
+ {
114
+
115
+ v2f o;
116
+
117
+ o.vertex = UnityObjectToClipPos(v.vertex);
118
+
119
+ float4 wpos = mul(unity_ObjectToWorld, v.vertex);
120
+
121
+ o.uv = wpos.xyz * 0.5 + 0.5;
122
+
123
+ return o;
124
+
125
+ }
126
+
127
+
128
+
129
+ fixed4 frag(v2f i) : SV_Target
130
+
131
+ {
132
+
133
+ return tex3D(_Volume, i.uv);
134
+
135
+ }
136
+
137
+
138
+
139
+ ENDCG
140
+
141
+
142
+
143
+ SubShader
144
+
145
+ {
146
+
147
+
148
+
149
+ Tags
150
+
151
+ {
152
+
153
+ "RenderType" = "Opaque"
154
+
155
+ }
156
+
157
+
158
+
159
+ Pass
160
+
161
+ {
162
+
163
+ CGPROGRAM
164
+
165
+ #pragma vertex vert
166
+
167
+ #pragma fragment frag
168
+
169
+ ENDCG
170
+
171
+ }
172
+
173
+
174
+
175
+ }
176
+
177
+
178
+
179
+ }
180
+
181
+ コード
182
+
183
+ ```
184
+
185
+
186
+
187
+ 毎度毎度初歩的な質問ばかりで申し訳ございません。。
188
+
189
+
190
+
49
- ![イメー説明](341a48c387e72d634e235c26c4c5c8bf.gif)![イメージ説明](8241a19bebdac111e32a2d79636e0c19.gif)
191
+ 適用しているオブェクトが、sphereを楕円球にしたものを複数合成させたものになりますので、形状が複雑だから適用できないのかと思い単純なCubeにもD&Dを試みたのですが、やはり無理でした。。
192
+
193
+
194
+
195
+ texture3Dの適用には何か独特な手順が必要なのでしょうか。
196
+
197
+ ご教示頂けますと幸甚です。

1

ダブって生成されたtextureの画像です

2020/12/10 02:46

投稿

911RSR
911RSR

スコア13

test CHANGED
File without changes
test CHANGED
@@ -43,3 +43,7 @@
43
43
  いろいろと疑問ばかりで申し訳ございませんが、少しでも先達の方々のお知恵を拝借できれば幸甚です。
44
44
 
45
45
  よろしくお願いいたします。
46
+
47
+
48
+
49
+ ![イメージ説明](341a48c387e72d634e235c26c4c5c8bf.gif)![イメージ説明](8241a19bebdac111e32a2d79636e0c19.gif)