GOSUKE FACTORY

何かの記録

2020/11/29 - 
MSC
 Shader を少し手直ししました。詳細テクスチャの追加(マスク画像で調整可)、ノーマルマップを2枚使えるようになりました。もう、これでいいかな。

 というか、Standard のShader で頂点カラーを有効にする事が出来れば一番いいのだけれど、今現在の新しいバージョンの Unity なら出来てたりすのかな。My Summer Car の Unity のバージョンは 5.0.0f4 で、2015年3月と5年以上前にリリースされたものと結構古い。これの為にアセットを作るのに必要な古いバージョンの Unity しかインストールしていないのだけれど、新しいバージョンのもインストールしてみるか。うーん、面倒だなあ。



Shader "Custom/Shader_VertexColor" {
	Properties {
			_MainTex ("Albedo", 2D) = "white" { }
			_Color      ("Color"     , Color      ) = (1, 1, 1, 1)
			_Metallic   ("Metallic"  , Range(0, 1)) = 0.0
			_Glossiness ("Smoothness", Range(0, 1)) = 0.5
			_Occlusion  ("Occlusion" , Range(0, 1)) = 1.0
		 	_BumpScale ("Scale", Float) = 1
 			_BumpMap ("Normal Map", 2D) = "bump" { } 			 
			_DetailAlbedoMap("Detail Albedo x2", 2D) = "white" {}
			_DetailNormalMapScale("Scale", Float) = 1.0
			_DetailNormalMap("Normal Map", 2D) = "bump" {}
			_DetailMask("Detail Mask", 2D) = "white" {}

	}

	SubShader {
		Tags {
			"Queue"      = "Geometry"
			"RenderType" = "Opaque"
			}
		
		CGPROGRAM
			#pragma target 3.0
			#pragma surface surf Standard fullforwardshadows
			
			fixed4 _Color;
			
			sampler2D _MainTex;
			sampler2D _BumpMap; 
			sampler2D _DetailAlbedoMap;
			sampler2D _DetailNormalMap;
			sampler2D _DetailMask;

 			half _BumpScale; 
			half _Glossiness;
			half _Metallic;
			half _Occlusion;
 			half _DetailNormalMapScale; 

			struct Input {
				float2 uv_MainTex;
				float2 uv2_DetailAlbedoMap;
				fixed4 color : COLOR;
			};


			void surf (Input IN, inout SurfaceOutputStandard o) {
				fixed4 c1 = tex2D(_MainTex, IN.uv_MainTex) * _Color;
				fixed4 c2 = tex2D(_DetailAlbedoMap, IN.uv2_DetailAlbedoMap) * _Color;
				fixed4 m = tex2D(_DetailMask, IN.uv_MainTex);

				o.Albedo     = lerp(c1, c2, m) * lerp(1, IN.color, _Occlusion);
				o.Metallic   = _Metallic;
				o.Smoothness = _Glossiness;

				fixed3 n  = UnpackScaleNormal(tex2D(_BumpMap, IN.uv_MainTex), _BumpScale);
				fixed3 n2 = UnpackScaleNormal(tex2D(_DetailNormalMap, IN.uv2_DetailAlbedoMap), _DetailNormalMapScale);
				o.Normal= BlendNormals(n, n2);

			}
		ENDCG
	}

	FallBack "Diffuse"
}


2020/11/28 - 
MSC


using System;
using MSCLoader;
using UnityEngine;
using Object = System.Object;

namespace NSR50
{
	public class NSR50 : Mod
	{
		public override string ID => "g_NSR50"; //Your mod ID (unique)
		public override string Name => "g_NSR50"; //You mod name
		public override string Author => "gosuke"; //Your Username
		public override string Version => "1.0"; //Version

		// Set this to true if you will be load custom assets from Assets folder.
		// This will create subfolder in Assets folder for your mod.
		public override bool UseAssetsFolder
		{
			get
			{
				return true;
			}
		}

	public override void OnNewGame()
		{
			// Called once, when starting a New Game, you can reset your saves here
		}

		public override void OnLoad()
		{

			// Called once, when mod is loading after game is fully loaded

			//アセットの読み込み
			this.ab = LoadAssets.LoadBundle(this, "nsr50.unity3d");
			
			//メッシュの読み込み
        	this.frame = this.ab.LoadAsset("frame.fbx") as GameObject;
			
			//マテリアルの読み込み
			this.nsrMat = this.ab.LoadAsset("nsrMat.mat") as Material;

			this.ab.Unload(false);

			this.frame = UnityEngine.Object.Instantiate<GameObject>(this.frame);
			UnityEngine.Object.Destroy(this.frame);

			//メッシュの置き換え
			GameObject.Find("JONNEZ ES(Clone)/MESH/frame").GetComponent<MeshFilter>().sharedMesh = this.frame.GetComponentInChildren<MeshFilter>().sharedMesh;

			//マテリアルの置き換え
			GameObject.Find("JONNEZ ES(Clone)/MESH/frame").GetComponent<MeshRenderer>().sharedMaterial = this.nsrMat;

			//位置・向き・スケールの設定
			GameObject.Find("JONNEZ ES(Clone)/MESH/frame").transform.localPosition = new Vector3(0f, 0f, 0f);
			GameObject.Find("JONNEZ ES(Clone)/MESH/frame").transform.localEulerAngles = new Vector3(0f, 0f, 0f);
			GameObject.Find("JONNEZ ES(Clone)/MESH/frame").transform.localScale = new Vector3(1f, 1f, 1f);

			}

		private AssetBundle ab;
		private GameObject frame;
		private Material nsrMat;
    }
}


2020/11/25 - 
MSC
 Shader を作成することで、頂点カラーで陰影をつける事が My Summer Car でもできたので、UV は適当に作業する事にしました。その代わりに、きれいに頂点カラーで陰影がつけられるようにメッシュの調整が必要になり手間がかかりますが、ちくちく UV を弄るよりかは、こっちの方がまだ楽しい。

 ただ、見よう見まねでごちゃごちゃ組み合わせた Shader なので、ちょっと心配です。あと、もう1枚テクスチャを重ねて、汚れの描画ができればいいのですが、うーん。


Shader "Custom/Shader_VertexColor" {
	Properties {
			_MainTex ("Albedo", 2D) = "white" { }
			_Color      ("Color"     , Color      ) = (1, 1, 1, 1)
			_Metallic   ("Metallic"  , Range(0, 1)) = 0.0
			_Glossiness ("Smoothness", Range(0, 1)) = 0.5
			_Occlusion  ("Occlusion" , Range(0, 1)) = 1.0
		 	_BumpScale ("Scale", Float) = 1
 			_BumpMap ("Normal Map", 2D) = "bump" { }
	}

	SubShader {
		Tags {
			"Queue"      = "Geometry"
			"RenderType" = "Opaque"
			}
		
		CGPROGRAM
			#pragma target 3.0
			#pragma surface surf Standard fullforwardshadows
			fixed4 _Color;
			sampler2D _MainTex;
			sampler2D _BumpMap; 
 			half _BumpScale; 
			half _Glossiness;
			half _Metallic;
			half _Occlusion;

			struct Input {
			float2 uv_MainTex;
				fixed4 color : COLOR;
			};

			void surf (Input IN, inout SurfaceOutputStandard o) {
				fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
				o.Albedo     = c.rgb * lerp(1, IN.color, _Occlusion);
				o.Metallic   = _Metallic;
				o.Smoothness = _Glossiness;

				fixed4 n = tex2D(_BumpMap, IN.uv_MainTex); 
				o.Normal = UnpackScaleNormal(n, _BumpScale); 

			}
		ENDCG
	}

	FallBack "Diffuse"
}


2020/11/24 - 
MSC
 NSR50 のモデリング終了。今回は、細部にこだわらず作成したので早くできました。次の作業は、あまり好きではない UV とテクスチャの作成だ、がんばろう。

2020/11/18 - 
MSC

 外装以外は大分出来たので、ゲーム内での動作確認をしてみました。こうみると、ちゃんと細かくモデリングしたくなってくるなぁ。でもそうすると、また完成までに半年、一年と、かかりそうなので、あともう少しだけ細部を付け足す程度にとどめておこう。

 今回は、LOD モデルを作成する必要がないので楽になるかなと思いきや、UV やテクスチャをきちんと作成しないといけないので大変だ。それに3D モデル作成以外にも必要な作業(主に MSC MOD Loader 関係で未解決の案件)がいくつかあり、それらを片付けていかないといけないので、考えてみると結構時間がかかりそう。

 解決しなければいけないことは、以下の通り。
  • コリジョンの置換
  • 既存メッシュの置換ではなく、新規メッシュの追加
  • 1つのメッシュに複数のマテリアルの割り当て
  • バックミラーの処理
  • ヘッドライトの設置
    • 現状では、可動するハンドルにヘッドライトが設置されているので再利用できず(フレームに固定する為)、別の個所に設置しなければいけない。
  • ウインカー・テールライトの新規設置と点灯
  • 動作するスピードメーターの設置
    • ヘッドライトと同様の理由。
  • 動作するタコメーターの新規設置
  • 音が鳴るホーンの新規設置
 こう列挙してみると、問題が山積みだ。うーん、これは年内完成は無理だろう。とても全てすんなり解決するとは思えない。


2020/11/05 - 
MSC
ボーダレスウインドウのやり方
  • 起動オプションに以下のパラメーターを追加する。
    -popupwindow
    

MOD 作成メモ
最初前5 78・[9]・1011 次5最後


Youtube Twitter


 当サイトはPC版ゲームのMODを中心に取り扱うなか、私gosukeのたわ言をつらつらと記録しています。(MODとはModification、元のゲームに様々な要素を追加・改変する事で、オリジナルのゲームよりさらに楽しめる幅が広がります。)

 また、リンクフリーではありますが、ファイルへの直リンクは出来ればご遠慮お願い致します。バナーでリンクする場合は下にあるバナーを使用して下さい。

管理者:gosuke

banner

意見、要望、感想、叱咤、激励、などなどありましたら下の意見箱または X(旧Twitter) までメッセージをどうぞ。
意見箱