[過去ログ] 【3Dゲームエンジン】Unity質問スレッド32 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
350(2): 2017/11/23(木)00:14 ID:QRNVPncp(1) AAS
新しくC#スクリプトを作ったら
オブジェクト参照がオブジェクトインスタンスに設置されていませんというエラーが出て
テストプレイしてもコンパイルエラーで実行できなくなったのだけど
なにか工程を忘れているのでしょうか?
351: 2017/11/23(木)00:36 ID:RZCCd0Fm(1/2) AAS
はい
352: 2017/11/23(木)02:39 ID:aJavQgtq(1/3) AAS
>>350
たぶん、アセットを買い忘れたのでしょう
353(5): 2017/11/23(木)02:44 ID:wLnswzoG(1/4) AAS
Unityのシェーダーで質問です
カスタムラインティング(lighting○○)の記述方法で困っています。
イメージとしては標準であるシェーダーのUnlit>Textureのような
元のテクスチャと同じ色をカスタムライティングで表現がしたいです
void surf(Input IN, inout SurfaceOutput o){
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
}
fixed4 Lighting○○(SurfaceOutput s, fixed3 lightDir, fixed atten){
half4 c;
c.rgb = ■■;
c.a = s.Alpha;
return c;
}
■■の部分に0.0を入れた場合本来のテクスチャより大分黒くなってしまいます。
かといって1.0を入れてみても真っ白になってしまいます。
数字の問題じゃなくてどこかの設定をかえるべき場合
シェーダーのどこを修正すれば良いでしょうか
それらしい単語や参考となる資料何かないでしょうか
354(1): 2017/11/23(木)03:03 ID:RZCCd0Fm(2/2) AAS
0.5をいれろ
355(1): 2017/11/23(木)03:05 ID:aJavQgtq(2/3) AAS
>>353
アセットを買いましょう
356: 2017/11/23(木)03:08 ID:hlwE+o0N(1) AAS
>>353
俺、シェーダーのことは何も知らんけど、RGBで0黒くなったり1で白くなったりするなら
明暗制御してそうだし、0.5でも入れて試してみればいいんじゃないの?
試した上で書いてるなら申し訳ない
357: 353 2017/11/23(木)03:19 ID:wLnswzoG(2/4) AAS
外部リンク[html]:docs.unity3d.com
ちなみにマニュアルのこのページを参考にしています
>>354
0.5や0.1をいれても元のテクスチャの色では表示されないんですよね…
(0.01刻みで全て試しました)
>>355
アセットかわないと作れないのでしょうか?
358(1): 2017/11/23(木)05:31 ID:VzY+3J1y(1/4) AAS
surf 関数の中でSurfaceOutputのAlbedoにテクスチャ色を代入してるんだから、Lighting関数ではs.Albedoを使わないとそりゃテクスチャ色は反映されないでしょ
o.Albedo = s.Albedo.rgb * 0.5;
でも試してみ
359: 2017/11/23(木)06:55 ID:VzY+3J1y(2/4) AAS
おっとo.Albedoじゃないや
寝ぼけてるな
c.rgb = s.Albedo * 0.5;
だった
360: 2017/11/23(木)07:46 ID:Fif9lAfv(1) AAS
ID:wLnswzoG
質問のテンプレが完全にキムチw
361: 2017/11/23(木)09:12 ID:iDiAdE9o(1) AAS
fps一人で作れるか
362: 2017/11/23(木)11:16 ID:81qTUW9X(1) AAS
359は男前
363(1): 353 2017/11/23(木)12:30 ID:wLnswzoG(3/4) AAS
>>358
回答ありがとうございます
その場合でも若干元の色よりくすんで表示されるようです
どうやら調べてみたらLightingのScene->SkyBoxのAmbientが影響しているようでした
シーン全体に影響はでますが
insensityを0にした状態でc.rgb = s.Albedo * 1.0にしたら
Unlit>Textureとまったく同じ色合いになり解決しました
364(1): 2017/11/23(木)13:07 ID:VzY+3J1y(3/4) AAS
>>363
Unlit/Textureとほぼ同じ動作をさせたいなら元ソースから改変したらどうだい?
外部リンク:unity3d.com
ここからビルトインシェーダーのソースをダウンロードしてUnlit-Normal.shaderの中身を確認してみ
ライティングの影響受けるサーフェスシェーダーじゃなくてバーテックス/フラグメントシェーダーになってる
365(1): 2017/11/23(木)13:19 ID:VzY+3J1y(4/4) AAS
どうしてもサーフェスシェーダーでやるなら
#pragma surface surf 〜の行に noambient を足せば出来るらしい
試したら出来た
366: 353 2017/11/23(木)13:33 ID:wLnswzoG(4/4) AAS
>>364
厳密に言うとそこからさらに独自の影をかけたいのでUnlit/Textureそのままじゃダメなんですよね
Unlit/Textureのソースだとたしかlightning offとなっていて
ライティングシェーダーそのものがOffになってました
>>365
貴方が神ですありがとうございます!
Lightingのinsensityを下げる以外は頂点・フラグメントシェーダー以外方法がないかと諦めていたのですが
この方法ならサーフェスシェーダーだけでも出来るんですね
助かりました
というわけで質問〆ですありがとうございました。
367: 名無し@キムチ 2017/11/23(木)19:44 ID:zG98k7/b(1) AAS
>>348
ドット絵の素材で上左右向きのものはたくさんありますが、上下左右向きのものはちょっとないと思います。
368(2): 2017/11/23(木)20:27 ID:0DStohp5(1) AAS
いやあるでしょ
むしろ3方向素材より4方向素材のほうが多いっしょ
369: 2017/11/23(木)20:38 ID:8VVO/uAT(1/7) AAS
はい、というわけで
「左右後頭部だけのドット絵なんか使えないだろキムチ君」と心でツッコミいれてROMってる人達
こんばんは
本日の講義のお時間です
前回に引き続き「IF分の色々」です
370: 2017/11/23(木)20:44 ID:8VVO/uAT(2/7) AAS
IF分は次のように"多重"にすることもできます。
例
if( a == 1 ){
if( b == 1 ){
Debug.Log("aとb両方が1だよ");
}
}
こうすることにより1つだけではなく複数の条件がそろった時にIFを成立させる事ができるわけです。
上の例では2重ですが当然ながら3重にも4重にも無制限に行えます。
ただしとても見づらくなっていきます。
例
if( a == 1 ){
if( b == 1 ){
if( c == 1 ){
if( d == 1 ){
Debug.Log("aとbとcとd、全部が1だよ");
}
}
}
}
そこで算術演算子である「&&(アンドと呼ぶ)」を使う事で同じ事が見やすく行えます。
例
if( a == 1 && b == 1 && c == 1 && d == 1 ){
Debug.Log("aとbとcとd、全部が1だよ");
}
この2つの例は見た目は違いますが実行結果は同じになります。
371: 2017/11/23(木)20:50 ID:8VVO/uAT(3/7) AAS
if( a == 1 && b == 1 && c == 1 && d == 1 ){
Debug.Log("aとbとcとd、全部が1だよ");
}
はaもbもcもdも"1"の時にifが成立します。
4つのうちどれか1つでも"1以外"だとifが成立しなくなります。
次の例では、「a、b、c、dのどれか1つでも1ならばifを成立させたい」やり方です。
算術演算子の「||(オアと呼ぶ)」を使います。
例
if( a == 1 || b == 1 || c == 1 || d == 1 ){
Debug.Log("aかbかcかdのどれかが1だよ");
}
このように「&&」「||」を使う事でさらに柔軟な条件分岐を行えます。
372: 2017/11/23(木)20:59 ID:8VVO/uAT(4/7) AAS
if文は基本は「条件が成立した時に実行したい」処理を書くわけですが
逆に「条件が不成立の時に実行したい」処理を書くこともできます。
それには「else節」を使用します。
まずはelse節がないif文の例です。
例
Debug.Log("IFの前");
if( a == 1 ){
Debug.Log("aは1");
}
Debug.Log("aは1ではない");
Debug.Log("IFの後");
これを実行すると「a = 1」の時は
"IFの前"、"aは1"、"aは1ではない"、"IFの後"
と4つ表示されます。
"aは1ではない"が不要です。
"else節"を使う事で次のようにできます。
例
Debug.Log("IFの前");
if( a == 1 ){
Debug.Log("aは1");
} else {
Debug.Log("aは1ではない");
}
Debug.Log("IFの後");
これを実行すると「a = 1」の時は"IFの前"、"aは1"、"IFの後"と3つ表示されます。
「a = 1」ではない時は"IFの前"、"aは1ではない"、"IFの後"と3つ表示されます。
理想的な結果です。
373: 2017/11/23(木)21:05 ID:8VVO/uAT(5/7) AAS
最後に「if〜else if」を説明します。
else節の後にさらにifを使い条件判定(分岐)をさせる事が出来ます。
例
if( a == 1 ){
Debug.Log("aは1");
} else if( a == 2 ){
Debug.Log("aは2");
} else if( a == 3 ){
Debug.Log("aは3");
} else {
Debug.Log("aは1でも2でも3でもない");
}
Debug.Log("IFの後");
例えば「a = 1」の時は十字キーの左を押した時の処理を、
「a = 2」の時は十字キーの右を押した時の処理を、
「a = 3」の時は十字キーの下を押した時の処理を行い時などに使うことができる書き方です。
if文の章は以上です。
ここまでで貴方はif文の使い方はほぼマスターしています。
ほとんどの条件をあなたは実現できることでしょう。
わかったかクソども
374: 2017/11/23(木)21:06 ID:8VVO/uAT(6/7) AAS
誤字は愛嬌だ
わかったかクソども
375(2): 2017/11/23(木)21:08 ID:W9y7pNcP(1/2) AAS
ライティングについて教えてください
android端末をターゲットとしています。
密室で壁や天井をある程度明るく照らしたいのですが、結果としては「VR脱出ゲーム2」Blacksmith DoubleCircleさんが作っているような感じにしたいのです。
Directional lightを上からと下からと照らす方法を考えたのですが、他に何か良い方法はありますか?
ポイントライトですと、壁や天井の反射がきつい感じです。
376: 2017/11/23(木)21:27 ID:KgDCdD6L(1) AAS
アンビエントライトを付けろよ。
377(1): 2017/11/23(木)21:31 ID:ClP9LjDh(1) AA×

378: 2017/11/23(木)21:48 ID:8VVO/uAT(7/7) AAS
>>377
画像リンク
379: 375 2017/11/23(木)21:56 ID:W9y7pNcP(2/2) AAS
ありがとうございました。
アンビエントライトの設定でうまくいきました。
最初はskyboxだったので白くなりすぎたのですが、Gradientにして色を設定したら思った明るさになりました。
上下前次1-新書関写板覧索設栞歴
あと 623 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.025s