With an improved understanding of transforms in Gladius and CubicVR.js, I turn my attention instead to light sources.
I have removed a revolving light source leaving only the one defined along with the camera:
    space.add( new engine.simulation.Entity( "camera",
      [
        new engine.core.Transform( [0, 0, 0] ),
        new cubicvr.Camera({
          targeted: true
        }),
        new cubicvr.Light()
      ]
    ));When the objects are close up (3 units away), the light is fairly bright:
When I double the distance, the reflection off the surfaces is significantly dimmed:

And when I move the objects 20 units away, the reflection from the light is very dim indeed:

All of that is to be expected, of course. The further objects in the real world are from a light, the harder they are to be seen. But, I the light source is made brighter:
    space.add( new engine.simulation.Entity( "camera",
      [
        new engine.core.Transform( [0, 1, -1] ),
        new cubicvr.Camera({
          targeted: true
        }),
        new cubicvr.Light({
          direction: [1,1,-1],
          type: "area",
          distance: 20.0,
          intensity: 200.0
        })
      ]
    ));Then even the distant objects should be much brighter. Except there is no change:
I am at a loss to explain this. Fiddling with any CubicVR Light and Camera seemingly has no effect. Perhaps this has something to do with being the first light / camera added?
To answer that, I can add another light. The trouble is, if I continue to add lights with the same constructor arguments as above, there is no change. So I borrow from the light definition in the original Gladius samples, which use a second class
LightDefinition:    var lightDefinition = new cubicvr.LightDefinition({
      intensity: 20,
      distance: 20,
      light_type: cubicvr.LightDefinition.LightTypes.POINT,
      method: cubicvr.LightDefinition.LightingMethods.DYNAMIC
    })
    space.add( new engine.simulation.Entity( "camera",
      [
        new engine.core.Transform( [0, 0, 0] ),
        new cubicvr.Camera({
          targeted: true
        }),
        new cubicvr.Light( lightDefinition )
      ]
    ));With that, I finally get my faraway planets nice and shiny:
And, in fact, if I add that back to the original light:
    var lightDefinition = new cubicvr.LightDefinition({
      intensity: 20,
      distance: 20,
      light_type: cubicvr.LightDefinition.LightTypes.POINT,
      method: cubicvr.LightDefinition.LightingMethods.DYNAMIC
    })
    space.add( new engine.simulation.Entity( "camera",
      [
        new engine.core.Transform( [0, 0, 0] ),
        new cubicvr.Camera({
          targeted: true
        }),
        new cubicvr.Light( lightDefinition )
      ]
    ));Then I again get the same nice light on my faraway object.  If I attempt to put those same arguments back in the Light constructor:    space.add( new engine.simulation.Entity( "camera",
      [
        new engine.core.Transform( [0, 0, 0] ),
        new cubicvr.Camera({
          targeted: true
        }),
        new cubicvr.Light({
          intensity: 20,
          distance: 20,
          light_type: cubicvr.LightDefinition.LightTypes.POINT,
          method: cubicvr.LightDefinition.LightingMethods.DYNAMIC
        })
      ]
    ));Then again I am back to the very dark light source only. So it seems that, in Gladius, the LightDefinition class is pretty much a requirement.Day #422
No comments:
Post a Comment