I am trying to get the same results in games such as Weaponry and Phantom Forces with sights. I followed through a tutorial (also linked below) but everytime I look in the opposite direction of the sun it reflects on the sight and makes it impossible to see anything because of the reflection.
Is there anything I could do to fix the reflection other than setting the Brightness to 0?
Ive tried:
Putting the Reflection property to 0
Messing with the Transparency
Messing with Lighting properties such as EnvironmentSpecularScale
If you’re fine with the glass not distorting the image then you can mess with the mesh’s normals to achieve a less noticeable specular highlight:
By reversing the normals of a plane, the specular highlight appears on top of the light source which helps hide it.
Here’s a place file for it: Non_Specular_Plane_Test1.rbxl (57.9 KB)
I’ve tried to play around with the settings and all and I found out that the transparency wont set because of the humanoid.
I need to have a humanoid in the Viewmodel in order to play animations.
here’s the file for the faulty sight with my lighting settings in game: Sight reflection.rbxl (114.1 KB)
and for some reason, there are still reflections on the sight
Oh yea the glass mesh’s transparency has to be less than 1 (I used 0.9999999) when parented under a model with a humanoid. Also here’s the scope with a new lens which should work. I edited the lens’ normals to point forward in Blender: Edited_Scope1.rbxm (64.1 KB)
Unfortunately Roblox seems to calculate the specular highlights differently on lower graphics levels. I’m not sure if there’s a way to fix it sadly.
I’ll try later experimenting with other normal configurations and see if any of them help.
I made a quick way to fix it using scripts, although it does fix it, its not ideal for low graphic lighting but it works
if anyone wants to try the code for themselves make sure to have in a ColorCorrection to the Lighting
local defaultBrightness = game.Lighting.Brightness
local defaultColorCorrection = game.Lighting:WaitForChild('ColorCorrection').Brightness
local function fixLighting()
local qualityLevel = tonumber(string.sub(tostring(UserSettings():GetService("UserGameSettings").SavedQualityLevel), 38))
if qualityLevel ~= nil and qualityLevel <= 2 then
game.Lighting.Brightness = 0
game.Lighting.ColorCorrection.Brightness = 0.15 -- how much the ColorCorrection's brightness is gonna cope
else
game.Lighting.Brightness = defaultBrightness
game.Lighting.ColorCorrection.Brightness = defaultColorCorrection
end
end
UserSettings().GameSettings:GetPropertyChangedSignal('SavedQualityLevel'):Connect(fixLighting)
fixLighting()