Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
195 stars 9 forks source link

Light source import intensity normalize affects color values #1815

Open Elektrospy opened 3 years ago

Elektrospy commented 3 years ago

Describe the bug

When using the import light feature under the advanced tab, the intensity normalization seems to affect the color value instead. Everything smaller then 0W in Blender scales the color values instead. For values over 0W it works and correctly caps it at 1

Relevant issues

based on the recent added light import feature: #1794

To Reproduce

Steps to reproduce the behavior:

  1. Generate / Import model containing lights
  2. import into neos using the advanced tab and checking "import lights"
  3. check the color and intensity values

Expected behavior

According to patch notes, the normalize should only cap the intensity at "1" for everything over 1

Bug information:

example data:

Test fbx export numbers | Export |||| Import ||| |---|---|---|---|---|---|---| | type | R G B A | watt || type | R G B A | intensity | | Area | 1 1 1 1 | 0.001 || Point | 0 0 0 1 | 1E-24 | | Area | 1 1 1 1 | 0.01 || Point | 0.01 0.01 0.01 1 | 1E-24 | | Area | 1 1 1 1 | 0.1 || Point | 0.1 0.1 0.1 1 | 1E-24 | | Area | 1 1 1 1 | 0 || Point | 0 0 0 1 | 1E-18 | | Area | 1 1 1 1 | 1 || Point | 1 1 1 1 | 1E-24 | | Area | 1 1 1 1 | 10 || Point | 1 1 1 1 | 1E-23 | | Area | 1 1 1 1 | 100 || Point | 1 1 1 1 | 1E-21 | | Area | 1 1 1 1 | 1000 || Point | 1 1 1 1 | 1E-18 | |||||||| | Spot | 1 1 1 1 | 0.001 || Spot | 0 0 0 1 | 1E-30 | | Spot | 1 1 1 1 | 0.01 || Spot | 0.01 0.01 0.01 1 | 1E-30 | | Spot | 1 1 1 1 | 0.1 || Spot | 0.1 0.1 0.1 1 | 1E-30 | | Spot | 1 1 1 1 | 0 || Spot | 0 0 0 1 | 1E-24 | | Spot | 1 1 1 1 | 1 || Spot | 1 1 1 1 | 1E-30 | | Spot | 1 1 1 1 | 10 || Spot | 1 1 1 1 | 1E-29 | | Spot | 1 1 1 1 | 100 || Spot | 1 1 1 1 | 1E-27 | | Spot | 1 1 1 1 | 1000 || Spot | 1 1 1 1 | 1E-24 | |||||||| | Point | 1 1 1 1 | 0.001 || Point | 0 0 0 1 | 1E-36 | | Point | 1 1 1 1 | 0.01 || Point | 0.01 0.01 0.01 1 | 1E-36 | | Point | 1 1 1 1 | 0.1 || Point | 0.1 0.1 0.1 1 | 1E-36 | | Point | 1 1 1 1 | 0 || Point | 0 0 0 1 | 1E-30 | | Point | 1 1 1 1 | 1 || Point | 1 1 1 1 | 1E-36 | | Point | 1 1 1 1 | 10 || Point | 1 1 1 1 | 1E-35 | | Point | 1 1 1 1 | 100 || Point | 1 1 1 1 | 1E-33 | | Point | 1 1 1 1 | 1000 || Point | 1 1 1 1 | 1E-30 |

example file:

Models-Test-Lights.zip

Reporters:

Elektrospy, Marsmaantje

Frooxius commented 3 years ago

This is expected behavior. The intensities are not capped, they're normalized. Meaning that the most intense light is scaled to 1 intensity and every other light is scaled proportionally, so their relative intensities are the same, just the absolute ones aren't too high.

You can use the light source wizard to rescale them after to desired intensities.

Elektrospy commented 3 years ago

Good to know how the normalize is done. :wink:

There is only one shortcoming with using the light wizard, since it only offers to multiply the values, it does fail with intensities which are at zero after import.

Would it be possible to get a "set value" feature in addition to the multiply? :thinking:

Frooxius commented 3 years ago

Why exactly are the values zero after import? Are they zero from the source as well? Set value could be added potentially, it would override all your light intensities to the same value though.

Elektrospy commented 3 years ago

Why exactly are the values zero after import? Are they zero from the source as well? i need todo some more investigating on that, but as far as i know they weren't zero in the exported model. if i import them using the sdk and then multiply the intensity values by 0.01 to fix the scale, they all look (more or less) fine 🤔

I am definitely gonna do some more testing regarding this 😉

Set value could be added potentially, Would be nice :)

it would override all your light intensities to the same value though. Isn't this why you can (and should) specify a origin slot and even filter by tags? 🤔