Lighting

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

作成できません
サービス

Lighting サービスは、エクスペリエンス内のグローバル照明を制御します。これには、Lighting Properties で説明されている様々な調整可能なプロパティが含まれます。

照明 は、Atmosphere オブジェクトを含む場合があり、パーティクル、霧、ぼんやり、色などの現実的な雰囲気効果をレンダリングするためのオブジェクトを含む場合があります。雰囲気エフェクト については、0>0> を参照してください。

さらに、 照明 (以下、 Workspace.CurrentCamera 含む) には、 Class.SunRaysEffect および 2> Class.BlurEffect2> などのポスト処理エフェクトが含まれている場合があります。詳細は、5>ポスト処理エフェクト5> を参照してください。

コードサンプル

Day/Night Cycle

local Lighting = game:GetService("Lighting")
local TIME_SPEED = 60 -- 1 min = 1 hour
local START_TIME = 9 -- 9am
local minutesAfterMidnight = START_TIME * 60
local waitTime = 60 / TIME_SPEED
while true do
minutesAfterMidnight = minutesAfterMidnight + 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait(waitTime)
end

概要

プロパティ

方法

イベント

プロパティ

Ambient

並列読み取り

天空から隠されたエリアに適用される照明の色合い、例えば室内のエリア。

このプロパティはデフォルトで 0, 0, 0 (ブラック) です。

このプロパティのレッド、グリーン、ブルーチャンネルが Lighting.OutdoorAmbient の相対チャンネルを超えない場合、鮮明度の変更は太陽/月の隠れたエリアに保留

注意、Lighting.GlobalShadows が無効になっているときは、隠されたエリアと非隠されたエリアの間には明らかな違いはありません。この場合、Lighting.OutdoorAmbient は無視され、環境プロパティの色はどこでも適用されます。

色の照明に影響するプロパティの詳細は、Lighting.ColorShiftBottomLighting.ColorShiftTop を参照してください。

Brightness

並列読み取り

場プレースの照明の強度。

この値を変更すると、マップの照明に太陽または月の光源の影響を変更できます。ブライトネスが 0 に設定されている場合、Lighting.ColorShift_Top またはLighting.ColorShift_Bottom の光源の影響を受ける

このプロパティがクランプされていない場合、効果は 0 から 2 の間にクランプされます。つまり、Brightness を 10 に設定すると、2 に設定すると同じです。

注、Lighting.AmbientLighting.OutdoorAmbient は、場所の明るさを影響することもできます。たとえば、Lighting.OutdoorAmbient を 255、255、255に設定すると、場所がデフ

ClockTime

複製されていません
並列読み取り

現在の時刻の数値表示 (時間ごと) 。 Lighting によって使用されている時刻は、Class.Lighting の時刻と同じです。

注意、このプロパティは実際の時間帯と一致しませんので、ゲーム中にスクリプトによって変更されない限り、変更されません。

Class.Lighting 時間フォーマットが 24 時間の弦楽器使用を含む 24 時間の形式を使用している場合は、Lighting.CurrentTime を使用します。Lighting.CurrentTime を変更するか、1>Class.Lighting:SetMinutesAfterMidnight()1> を使用すると、このプロパ

ClockTime を使用するには、時間を正常化する必要があります:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end

Class.Lighting.TimeOfDay を使用するには、時間を正常化する必要があり、形式が整列された文字列です:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local hours = string.format("%02.f", seconds//3600)
local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)))
local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60))
local timeString = hours..":"..mins..":"..secs
Lighting.TimeOfDay = timeString
task.wait()
end

Class.Lighting:SetMinutesAfterMidnight() を使用すると、追加の処理は必要ありません:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end

ColorShift_Bottom

並列読み取り

太陽または月の向こうに反射する光の中にある色。

ColorShift_Bottom によって影響を受ける BasePart の表面は、太陽または月の位置に対して BasePart の位置と方向に依拠しています。太陽が直接上にあるとき、色の変更は BasePart の下面にのみ適用されます。 2>Class.BasePart2> が上にあると、色の変更

このエフェクトは、Lighting.Brightness を変更することで増加または減少できます。

ColorShift_Bottom は、Lighting.ColorShift_Top に反対の表面に影響します

注、 Lighting.ColorShift_Top と ColorShift_Bottom は、Lighting.Ambient および Lighting.OutdoorAmbient プロパティの大きさが 0, 0, 0 の場合、1> ColorShift_Bottom

ColorShift_Top

並列読み取り

太陽または月の表面から反射される色を表します。

ColorShift_Top によって影響される Class.BasePart の表面は、太陽または月の位置に対して Class.BasePart の位置と方向に依拠しています。太陽が直接上にあるとき、色の変更は 0>Class.BasePart0> の上面にのみ適用されます。

このエフェクトは、Lighting.Brightness を変更することで増加または減少できます。

ColorShift_Top は、表面に光を反射するが、Lighting.ColorShift_Bottom は、光から保護された表面を影響します。

注、ColorShift_Top と ColorShift_Bottom は、Lighting.AmbientLighting.OutdoorAmbient プロパティの大きさが 0、0、0 の場合、Class.Lighting.Ambient と 1> Class.Lighting.OutdoorAmbient1> プロパティの大きさが 0、0、0 の場合、4> Class.Lighting.Ambient4> と 7> Class.Lighting.Out

EnvironmentDiffuseScale

並列読み取り

環境から得られるアンビエントライト。このプロパティの値はデフォルトで 0 に設定されています。

Class.Lighting.Ambient および Lighting.OutdoorAmbient プロパティと似ていますが、動的であり、天空と時間の経過に応じて変更されます。このプロパティが増加すると、Ambient および 1>OutdoorAmbient1> プロパティがそれぞれ減少します。

また、空箱を夜に表示するようにします。

EnvironmentSpecularScale

並列読み取り

環境から得られた反射光。このプロパティの値はデフォルトで 0 に設定されています。

滑らかなオブジェクトは環境を反映します。特に、金属をより現実にするために重要です。

ExposureCompensation

並列読み取り

このプロパティは、ステップの前にシーンの露出レベルにバイアスを適用する露出コンペンセイトの量を決定します。デフォルトは 0 です。

  • +1 の値は、2倍の露出を意味し、-1 は半分の露出を意味します。
  • 0 の値は、露出補償が行われないことを示します。
  • 範囲: -5 から 5

このプロパティはレプリケートされ、スクリプトから設定するか、Studio から設定できます。


local Lighting = game:GetService("Lighting")
Lighting.ExposureCompensation = 5

このプロパティを使用して、トーンマップステップの前に露出量を調整して、より薄いまたはより暗い領域でより多くの詳細を表示できます。これは、HDR パイプラインに移行するにつれて必要になります。

Class.Lighting.Technology が Legacy に設定されているとき、このプロパティには影響しません。


local Lighting = game:GetService("Lighting")
-- ExposureCompensation は影響を受けませんが、Lighting の技術は Legacy です
Lighting.Technology = Enum.Technology.Legacy
Lighting.ExposureCompensation = 5

FogColor

並列読み取り

Lighting に Class.Atmosphere オブジェクトが含まれているときは、Atmosphereプロパティは非表示になります。

Datatype.Color3 値、Lighting 霧の色を与える。

霧はどうして機能しますか?

Roblox の霧は、Workspace.CurrentCamera 方向に平行する飛行機で表示されます。それは、Lighting.FogStart プロパティの間で見えないようになるまでにフェイドします。それは、Lighting.FogEnd プロパティの間で完全に不可視にな

距離が Lighting.FogEnd 以上の場合、色は完全に FogColor によって決まります。しかし、Lighting.FogStart および Lighting.FogEnd の距離の間、色がブレンドされる度は位置によります。

Roblox の霧は、Lighting.FogStartLighting.FogEnd の間の直線的なインターポリングを使用します。これは、 Class.Lighting.


local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200

注:霧はスカイボックスを隠すことはありません。

FogEnd

並列読み取り

Lighting に Class.Atmosphere オブジェクトが含まれているときは、Atmosphereプロパティは非表示になります。

スタッドで、Workspace.CurrentCamera からの深さ、霧の完全に不透明になる。

霧はどうして機能しますか?

Roblox の霧は、Workspace.CurrentCameraに平行した飛行機で表示されます。それは、Lighting.FogStart の中で、Lighting.FogColor の間で消えるため、FogEnd プロパティで完全

FogEnd より大きな距離では、色は完全に Lighting.FogColor によって決定されます。しかし、Lighting.FogStart と FogEnd の距離の間、色がブレンドされる度は位置によります。

Roblox の霧は、Lighting.FogStartLighting.FogStart の間の直線的なインターポリングを使用します。これは、Class.Lighting.FogStart が 10 であり、1>Class.Lighting.FogEnd1> が


local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200

霧の色は Lighting.FogColor を使用して調整できます。

注:霧はスカイボックスを隠すことはありません。

FogStart

並列読み取り

Lighting に Class.Atmosphere オブジェクトが含まれているときは、Atmosphereプロパティは非表示になります。

スタッドで、Workspace.CurrentCamera からの深さ、および霧の表示始時点です。

霧はどうして機能しますか?

Roblox の霧は、Workspace.CurrentCamera の外向きの平面に表示されます。霧Start プロパティのうち、Lighting.FogEnd の間でフェイドして、Lighting.FogColor の外向きの平面に完全に不可視になります。�

距離が Lighting.FogEnd 以上の場合、色は Lighting.FogColor によって完全に決まります。しかし、FogStart と Lighting.FogEnd の間の距離によって、色がどの程度混ざるかは位置によります。

Roblox の霧は、FogStart と Lighting.FogEnd の間に直線的なインターポリングを使用します。これは、FogStart が 10 であり、 Lighting.FogEnd が 20 である場合、霧は 50% の距離


local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200

霧の色は Lighting.FogColor を使用して調整できます。

注:霧はスカイボックスを隠すことはありません。

GeographicLatitude

並列読み取り

シーンの地理的な位置による、`Class.Lighting 時間の結果の影響。

太陽の位置を計算するとき、地球の傾きも考慮されます。

GeographicLatitude を変更すると、太陽の位置はすべての Lighting.TimeOfDay で変更されます。太陽または月の位置を取得しようとする開発者は、Lighting:GetSunDirection() または Lighting:GetMoonDirection() を使用する必要があります。

コードサンプル

Sun direction

local Lighting = game:GetService("Lighting")
local UNIT_Z = Vector3.new(0, 0, 1)
local EARTH_TILT = math.rad(23.5) -- The Earth's tilt in radians.
local HALF_SOLAR_YEAR = 182.6282 -- Half the length of an average solar year
local function getSunDirection()
local gameTime = Lighting:GetMinutesAfterMidnight()
local geoLatitude = Lighting.GeographicLatitude
local dayTime = gameTime / 1440
local sourceAngle = 2 * math.pi * dayTime
local sunPosition = Vector3.new(math.sin(sourceAngle), -math.cos(sourceAngle), 0)
local latRad = math.rad(geoLatitude)
local sunOffset = -EARTH_TILT * math.cos(math.pi * (dayTime - HALF_SOLAR_YEAR) / HALF_SOLAR_YEAR) - latRad
local sunRotation = CFrame.fromAxisAngle(UNIT_Z:Cross(sunPosition), sunOffset)
local sunDirection = sunRotation * sunPosition
return sunDirection
end
print(getSunDirection())

GlobalShadows

並列読み取り

ゲームでボクセルベースのダイナミックライティングを切り替えます

GlobalShadows は何をしますか?

[シャドウ] を [オン] に設定すると、シェードは太陽と月の位置に応じてシェルターエリアにレンダリングされます。これらのエリアに適用される照明の色は、Lighting.Ambient プロパティによって決まります。Lighting.OutdoorAmbient プロパティによって、Class.Lighting.

無効にすると、シャドウは描かれず、室内と屋外のエリア間で明瞭な区分が行われません。結果、Lighting.Ambientプロパティは照明の色を決定し、Lighting.OutdoorAmbientは何もしません。

シャドウはボクセルシステムを使用して計算され、各照明ボクセルは 4x4x4 スタッドです。これは、オブジェクトが現実的なシャドウを表示するために、4x4x4 スタッド以上の大きさになる必要があることを意味します。シャドウは、BaseParts が移動すると再計算されます。

注:このプロパティは、GlobalShadows が設定されているかどうかにかかわらず、キャラクターのシャドウとは関連していません。

Roblox のダイナミックライティングに関する詳細は、この ブログポスト を参照してください。

グローバルシャドウを切り替える

グローバルシャドウ設定を切り替える開発者は、Lighting.Ambient を無効にすると、場所がかなり暗くなることに気づくでしょう。これは、Lighting.Ambient を無効にすると、室内と屋外の両方の場所で

ほとんどの場合、開発者はグローバルシャドウを有効にすることをお勧めします、これは視覚的に優れているためです。Lighting Properties ガイド に参照してください。

スクリプト作成できません
並列読み取り

OutdoorAmbient

並列読み取り

屋外エリアに適用された照明の色。

このプロパティはデフォルトで 127、127、127 です。

Class.Lighting.Ambient のレッド、グリーン、ブルーチャンネルがこのプロパティのチャンネルと一致する場合、屋外エリアの照明の色は、

注意、Lighting.GlobalShadows が無効になっていると、天空から隠されたエリアと、そうでないエリアの間には明らかな違いがありません。この場合、OutdoorAmbient は無視され、Lighting.Ambient プロパティの色はすべての場所に適用されます。

色に影響を与えるプロパティの詳細は、Lighting.ColorShift_BottomLighting.ColorShift_Top を参照してください。

スクリプト作成できません
並列読み取り

ShadowSoftness

並列読み取り

シャドウのぼかし度をコントロールします。このプロパティの値はデフォルトで 0.2 に設定されています。

このプロパティは、Lighting.Technology モードが ShadowMap または Future であるときにのみ機能します。

Technology

並列読み取り
Robloxのスクリプトセキュリティ

3D 世界をレンダリングするための照明システムを決定します。スクリプト不可、Studio でのみ変更可能。<a href="https://www. enemie.com/">エニメーション技術</a> により、各オプションの詳細なオプションとビジュアルエフェクトを提供します。

TimeOfDay

並列読み取り

Class.Lighting が使用する現在の時刻の 24 時間のストリング表現。

注意、このプロパティは実際の時間帯と一致しませんので、ゲーム中にスクリプトによって変更されない限り、変更されません。

For a numeric measure of Lighting 時間使用 Lighting.ClockTime 変更 Lighting.ClockTime または使用 1> Class.Lighting:SetMinutesAfterMidnight()1> このプロパティを変更することもあります。

TimeOfDay を使用するには、時間を正常化し、形式に変換した文字列が必要です:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local hours = string.format("%02.f", seconds//3600)
local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)))
local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60))
local timeString = hours..":"..mins..":"..secs
Lighting.TimeOfDay = timeString
task.wait()
end

Class.Lighting.ClockTime を使用するには、時間を正常化する必要があります:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end

Class.Lighting:SetMinutesAfterMidnight() を使用すると、追加の処理は必要ありません:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end

方法

GetMinutesAfterMidnight

並列書き込み

照明の目的で午後 12 時後になったときにかかった時間を返します。

この数値は、Lighting.ClockTime を 60 倍にするとほとんど同じになります。

この数値は、Lighting:SetMinutesAfterMidnight() に毎日午後に返る分の時間に基づいて、常に等しくありません。

For Lighting 時間形式が文字列として形式変換されている場合は、Lighting.TimeOfDay を参照してください。


戻り値

真夜中から午後何分かしてから。

コードサンプル

Lighting:GetMinutesAfterMidnight

local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMinutesAfterMidnight())

GetMoonDirection

並列書き込み

Datatype.Vector3 を返します。これは、0、0、0の位置から月の方向を表します。

注意、月が「設設定する」を持っていなくなり、表示されなくなると、この関数によって返される Vector3 は、マップの下の月に続き続けて指向します。

月の位置を変更したい開発者は、Lighting.ClockTime または Lighting.GeographicLatitude プロパティを使用する必要があります。

この関数の変数は、太陽の方向を取得するために存在します、 Lighting:GetSunDirection()


戻り値

Vector3 は、0、0、0の位置から月の方向を表示します。

コードサンプル

Lighting:GetMoonDirection

local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMoonDirection())

GetMoonPhase

月の現在のフェーズを返します。フェーズを変更することはできませんので、0.75 を常に返します。


戻り値

GetSunDirection

並列書き込み

Datatype.Vector3 を返します。これは、0、0、0の位置から太陽の方向を表します。

注意、太陽が設定され、再び表示されなくなったとき、この関数によって返される Vector3 は、マップの下にある太陽に引き続きポイントを向けます。

太陽の位置を変更したい開発者は、Lighting.ClockTime または Lighting.GeographicLatitude プロパティを使用する必要があります。

Class.Lighting:GetMoonDirection() の変異体があり、月の方向を取得するために、Class.Lighting:GetMoonDirection() が存在します。


戻り値

Vector3 は、0、0、0の位置から太陽の方向を表示します。

コードサンプル

Lighting:GetSunDirection

local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
Lighting.GeographicLatitude = 41.73
print(Lighting:GetSunDirection())

SetMinutesAfterMidnight

void

Class.Lighting.TimeOfDay と Lighting.ClockTime をミッドナイト後の指定された数分に設定します。

日/夜のスクリプトを作成するには?

SetMinutesAfterMidnight は、Script などの日/夜サイクルで、Lighting.TimeOfDay の形式に変換する必要なく、数値を使用できます。また、Class.Lighting.TimeOfDay の次の日に対応する値を超えると、以下のコードスナップショットを参照してください。

Class.Lighting.TimeOfDay を使用するには、時間を正常化する必要があり、形式が整列された文字列です:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local hours = string.format("%02.f", seconds // 3600)
local mins = string.format("%02.f", math.floor(seconds / 60 - (hours * 60)))
local secs = string.format("%02.f", math.floor(seconds - hours * 3600 - mins * 60))
local timeString = hours .. ":" .. mins .. ":" .. secs
Lighting.TimeOfDay = timeString
task.wait()
end

Class.Lighting.ClockTime を使用するには、時間を正常化する必要があります:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end

Class.Lighting:SetMinutesAfterMidnight() を使用すると、追加の処理は必要ありません:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end

パラメータ

minutes: number

真夜中から午後何分かしてから。


戻り値

void

コードサンプル

Setting Lighting Time

local Lighting = game:GetService("Lighting")
Lighting:SetMinutesAfterMidnight(840)

イベント

LightingChanged

このイベントは、Lighting プロパティが変更されたり、Sky が追加されたり、Lighting から削除されたりすると発生します。

このイベントは、Lighting のほとんどのプロパティが変更されたときに発生するため、開発者は次のいくつかの例外を知っておく必要があります:

この動作が望ましくない場合は、Object.ChangedイベントまたはObject:GetPropertyChangedSignal()関数を使用できます。

パラメータ

skyChanged: bool

コードサンプル

Lighting.LightingChanged

local Lighting = game:GetService("Lighting")
local function onLightingChanged(skyboxChanged)
if skyboxChanged then
print("Skybox has changed")
else
print("The skybox did not change.")
end
end
Lighting.LightingChanged:Connect(onLightingChanged)