ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2023ǯ12·î20Æü(¿å) 17:41:08ÍúÎò
¡¡¤³¤Îµ»ö¤Ç¤Ï¡¢°Ê²¼¤ÎÍ×ÁǤ˾ÇÅÀ¤òÅö¤Æ¤Æ¾Ò²ð¤·¤Þ¤¹(UI ´ØÏ¢¤Ë¤Ä¤¤¤Æ¤Ï¾Ê¤¤¤Æ¤¤¤Þ¤¹)¡£
¡¡Skybox¤Ï¥²¡¼¥à¤ÎÊ·°Ïµ¤¤òÂ礤¯ÊѤ¨¤ë½ÅÍפÊÍ×ÁǤǤ¹¡£
Skybox¤òÀßÄꤹ¤ë¤³¤È¤Ç¡¢¥²¡¼¥à¤ÎÇطʤ˥ꥢ¥ë¤Ê¶õ¤ä·Ê¿§¤òɽ¼¨¤Ç¤¤Þ¤¹¡£
¡¡[Window ¢ª Rendering ¢ª Lighting] ¤«¤éÀßÄê²èÌ̤ò³«¤¡¢[Environment] ¥¿¥ÖÆâ¤Î [Environment] ¤è¤êÀßÄê¤Ç¤¤Þ¤¹¡£

¡¡Skybox Material ¤ÎÉôʬ¤Ë Skybox ÍѤΥޥƥꥢ¥ë¤òÀßÄꤹ¤ë¤³¤È¤Ç¡¢Êѹ¹¤Ç¤¤Þ¤¹¡£

¡¡¥¹¥¯¥ê¥×¥È¤òÍøÍѤ·¡¢Æ°Åª¤Ë Skybox¤ÎÀßÄê¤òÊѹ¹¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
// Êѹ¹¤·¤¿¤¤¥Þ¥Æ¥ê¥¢¥ë¤ò¥¢¥µ¥¤¥ó [SerializeField] private Material newSkyboxMaterial; // Skybox¤òÀßÄꤹ¤ë RenderSettings.skybox = newSkyboxMaterial;
»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥É¥¥å¥á¥ó¥È
Sky
¡¡¥Õ¥©¥°¤Ï¡¢¥²¡¼¥à¤Î±ü¹Ô¤´¶¤ò¶¯Ä´¤·¡¢Ê·°Ïµ¤¤ò¹â¤á¤ë¤¿¤á¤Î½ÅÍפʥ¨¥Õ¥§¥¯¥È¤Ç¤¹¡£
¡¡Skybox ¤ÈƱ¤¸¤¯¡¢[Window ¢ª Rendering ¢ª Lighting] ¤«¤éÀßÄê²èÌ̤ò³«¤¡¢[Environment] ¥¿¥ÖÆâ¤Î [Other Settings] ¤è¤êÀßÄê¤Ç¤¤Þ¤¹¡£
¡¡ºÇ½é¤Ï Fog ¤Î¥Á¥§¥Ã¥¯¤¬³°¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤Á¤é¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤ë¤³¤È¤Ç¡¢¥Õ¥©¥°¤¬Í¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡

¡¡Color ¤Ç¥Õ¥©¥°¤Î¿§Ì£¤ÎÄ´À°¡¢Density ¤Ç¥Õ¥©¥°¤Î¶¯ÅÙ¤òÀßÄꤷ¤Þ¤¹¡£
¡¡Â¾¤ÎÀßÄê¹àÌܤˤĤ¤¤Æ¤Ï¡¢¥Þ¥Ë¥å¥¢¥ë¤Ê¤É¤ò»²¹Í¤Ë¤·¤é¤Ù¤Æ¼ÂºÝ¤Ë»î¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡¡Skybox ¤Ë¤Ä¤¤¤Æ¤â²òÀ⤬¤¢¤ê¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥É¥¥å¥á¥ó¥È
Lighting ¥¦¥£¥ó¥É¥¦
¡¡¥¹¥¯¥ê¥×¥È¤òÍøÍѤ·¤ÆưŪ¤Ë¥Õ¥©¥°¤òÀßÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
// ¥Õ¥©¥°¤òÀßÄꤹ¤ëÊýË¡ // ¥Õ¥©¥°¤ò͸ú²½(false ¤Ç̵¸ú²½) RenderSettings.fog = true; // ¥Õ¥©¥°¤Î¿§¤ÎÊѹ¹ RenderSettings.fogColor = Color.gray; // ¥Õ¥©¥°¤Î¶¯ÅÙ¤ÎÊѹ¹ RenderSettings.fogDensity = 0.02f;
¡¡Camera ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î Clipping Planes ¤òÄ´À°¤¹¤ë¤³¤È¤Ç¡¢¥«¥á¥é¤Î»ëÌîÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Îɽ¼¨ÈϰϤòÀ©¸æ¤Ç¤¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ò¸þ¾å¤µ¤»¤Ä¤Ä¡¢¥²¡¼¥à¤Î¸«±É¤¨¤ò¸þ¾å¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£

¡¡Cinemachine ¤Î¾ì¹ç¤Ë¤â¡¢VitualCamera ¥³¥ó¥Ý¡¼¥Í¥ó¥ÈÆâ¤ËÀßÄê¹àÌÜ(Lens Æâ)¤¬¤¢¤ê¤Þ¤¹¡£

¡¡
¡¡¥¹¥¯¥ê¥×¥È¤òÍøÍѤ·¤ÆưŪ¤ËÀßÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
// ¥«¥á¥é¤Î Clipping Planes ¤òÄ´À°¤¹¤ëÊýË¡(near) Camera.main.nearClipPlane = 0.1f; // ¥«¥á¥é¤Î Clipping Planes ¤òÄ´À°¤¹¤ëÊýË¡(far) Camera.main.farClipPlane = 1000f;
»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥É¥¥å¥á¥ó¥È
Camera component
¡¡¥ª¥¯¥ë¡¼¥¸¥ç¥ó¥«¥ê¥ó¥°¤Ï¡¢ÉÔÍפʥª¥Ö¥¸¥§¥¯¥È¤ÎÉÁ²è¤òºï¸º¤·¡¢¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ò¸þ¾å¤µ¤»¤ë¤¿¤á¤ÎÊýË¡¤Ç¤¹¡£
// ¥ª¥¯¥ë¡¼¥¸¥ç¥ó¥«¥ê¥ó¥°¤Î¼ÂÁõ OcclusionCulling.generationMode = OcclusionCullingMode.OnDemand; OcclusionCulling.doesSceneHaveManualPortals = true;
»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥É¥¥å¥á¥ó¥È
Occlusion culling
¡¡¥ê¥Õ¥ì¥¯¥·¥ç¥ó¥×¥í¡¼¥Ö¤ò»ÈÍѤ¹¤ë¤È¡¢¥ê¥¢¥ë¤Ê´Ä¶È¿¼Í¤ò¼Â¸½¤Ç¤¤Þ¤¹¡£
¥ê¥Õ¥ì¥¯¥·¥ç¥ó¥×¥í¡¼¥Ö¤òÀßÄꤷ¡¢¥·¡¼¥ó¤ÎÈ¿¼Í¤ò¸þ¾å¤µ¤»¤ëÊýË¡¤ò¼¨¤·¤Þ¤¹¡£
// ¥ê¥Õ¥ì¥¯¥·¥ç¥ó¥×¥í¡¼¥Ö¤òÀßÄꤹ¤ëÊýË¡ ReflectionProbe probe = GetComponent<ReflectionProbe>(); probe.RenderProbe();
»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥É¥¥å¥á¥ó¥È
Reflection Probes
¡¡¥é¥¤¥È¥×¥í¡¼¥Ö¤ò³èÍѤ¹¤ë¤È¡¢¥¥ã¥é¥¯¥¿¡¼¤ä¥ª¥Ö¥¸¥§¥¯¥È¤¬´Ä¶¸÷¤òÀµ³Î¤ËÈ¿±Ç¤Ç¤¤Þ¤¹¡£
¥é¥¤¥È¥×¥í¡¼¥Ö¤òÀßÄꤷ¡¢ÊªÂΤξÈÌÀ¤ò²þÁ±¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£
// ¥é¥¤¥È¥×¥í¡¼¥Ö¤òÀßÄꤹ¤ëÊýË¡ LightProbes.Tetrahedralize(myProbePositions, myProbeCoefficients);
»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥É¥¥å¥á¥ó¥È
Light Probes
¡¡3D¥²¡¼¥à¤Î¥Ó¥¸¥å¥¢¥ë¤ò¤µ¤é¤Ë¸þ¾å¤µ¤»¤ë¤¿¤á¤Ë¡¢¥Ý¥¹¥È¥×¥í¥»¥Ã¥·¥ó¥°¤ÏÈó¾ï¤ËÍÍѤǤ¹¡£
¤³¤ì¤Ï¡¢¥²¡¼¥à¥·¡¼¥ó¤Î¥ì¥ó¥À¥ê¥ó¥°¤¬´°Î»¤·¤¿¸å¤Ë¡¢¥¨¥Õ¥§¥¯¥È¤äÊäÀµ¤òŬÍѤ¹¤ëµ»½Ñ¤Ç¤¹¡£
¡¡Unity¤Ç¤Ï¡¢¥ì¥ó¥À¡¼¥Ñ¥¤¥×¥é¥¤¥ó¤Î¼ïÎà¤Ë¤è¤ê¤Þ¤¹¤¬¡¢Post-Processing Stack¤È¤¤¤¦¥Ä¡¼¥ë¤ò»ÈÍѤ·¤Æ´Êñ¤Ë¥Ý¥¹¥È¥×¥í¥»¥Ã¥·¥ó¥°¤òƳÆþ¤Ç¤¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥É¥¥å¥á¥ó¥È
Post-processing and full-screen effects
¡¡Post-Processing Stack¤ò¥×¥í¥¸¥§¥¯¥È¤Ë¥¤¥ó¥Ý¡¼¥È¤·¤¿¤é¡¢¥·¡¼¥óÆâ¤ËPost-Processing Volume¤òºîÀ®¤·¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥Ý¥¹¥È¥×¥í¥»¥Ã¥·¥ó¥°¥¨¥Õ¥§¥¯¥È¤òÀ©¸æ¤¹¤ë¤¿¤á¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£
using UnityEngine; using UnityEngine.Rendering.PostProcessing; public class PostProcessingController : MonoBehaviour { public PostProcessProfile profile; void Start() { var volume = gameObject.AddComponent<PostProcessVolume>(); volume.profile = profile; } }
¡¡Post-Processing Volume¤òÀßÄꤷ¤¿¤é¡¢¥¨¥Õ¥§¥¯¥È¤òŬÍѤǤ¤Þ¤¹¡£°Ê²¼¤Ï°ìÈÌŪ¤ÊÎã¤Ç¤¹¡£
using UnityEngine; using UnityEngine.Rendering.PostProcessing; public class PostProcessingController : MonoBehaviour { public PostProcessProfile profile; void Start() { var volume = gameObject.AddComponent<PostProcessVolume>(); volume.profile = profile; Bloom bloom; if (volume.profile.TryGetSettings(out bloom)) { bloom.enabled.value = true; bloom.intensity.value = 1.0f; } } }
using UnityEngine; using UnityEngine.Rendering.PostProcessing; public class PostProcessingController : MonoBehaviour { public PostProcessProfile profile; void Start() { var volume = gameObject.AddComponent<PostProcessVolume>(); volume.profile = profile; ColorGrading colorGrading; if (volume.profile.TryGetSettings(out colorGrading)) { colorGrading.enabled.value = true; colorGrading.temperature.value = 0.5f; // ¿§²¹ÅÙ¤ÎÄ´À° colorGrading.saturation.value = 1.2f; // ºÌÅÙ¤ÎÄ´À° } } }
¡¡¤Þ¤¿¡¢Æȼ«¤Î¥Ý¥¹¥È¥×¥í¥»¥Ã¥·¥ó¥°¥¨¥Õ¥§¥¯¥È¤òºîÀ®¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
¥«¥¹¥¿¥à¥¨¥Õ¥§¥¯¥È¤òºîÀ®¤¹¤ë¾ì¹ç¡¢Post-Processing Stack¤Î¥«¥¹¥¿¥à¥·¥§¡¼¥À¡¼¤ò»ÈÍѤ¹¤ë¤³¤È¤¬°ìÈÌŪ¤Ç¤¹¡£
¤½¤Î¸å¡¢C#¥¹¥¯¥ê¥×¥È¤Ç¤½¤Î¥¨¥Õ¥§¥¯¥È¤òÀ©¸æ¤·¤Þ¤¹¡£
¡¡¥Ý¥¹¥È¥×¥í¥»¥Ã¥·¥ó¥°¤Ï¡¢¥²¡¼¥à¤Î¥Ó¥¸¥å¥¢¥ë¤ò·àŪ¤Ë¸þ¾å¤µ¤»¤ë¤¿¤á¤Î¥Ñ¥ï¥Õ¥ë¤Ê¥Ä¡¼¥ë¤Ç¤¢¤ê¡¢¥¨¥Õ¥§¥¯¥È¤ò¥«¥¹¥¿¥Þ¥¤¥º¤Ç¤¤Þ¤¹¡£
¥Ý¥¹¥È¥×¥í¥»¥Ã¥·¥ó¥°¥¨¥Õ¥§¥¯¥È¤ò»È¤Ã¤Æ¡¢¥²¡¼¥à¤ÎÊ·°Ïµ¤¤äÈþ¤·¤µ¤ò¤µ¤é¤Ë¹â¤á¤Þ¤·¤ç¤¦¡£
¡¡¤³¤ì¤é¤Î¥Æ¥¯¥Ë¥Ã¥¯¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤Ç¡¢¥²¡¼¥à¤Î¥Ó¥¸¥å¥¢¥ë¤ò¸þ¾å¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
¡ÚUnity¡Û̵ÎÁ¥¢¥»¥Ã¥È¤Î¥¯¥ª¥ê¥Æ¥£¤ò´Êñ¤Ë¾å¤²¤ëÊýË¡¤ò²òÀ⤷¤Þ¤¹¡Ú¤Ò¤í¤Ï¤¹¡Û
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯