#VRML V2.0 utf8
# unit neutral color
DEF neutral PhBLxySpectrum { xy 0.333333 0.333333 }
# physically based light source appearance
DEF Light PhBAppearance {
surface PhBHomogeneousSurface {
edf PhBEDF {
intensity 10000. # [lux]
spectrum USE neutral
emitter PhBDiffuseEmitter {}
}
}
}
# unit red color
DEF red PhBLxySpectrum { xy 0.6400 0.3300 }
# diffuse red appearance
DEF DiffuseRed PhBAppearance {
surface PhBHomogeneousSurface {
bsdf PhBSDF {
intensity 0.8
spectrum USE red
scatterer PhBDiffuseReflector {}
}
}
}
# unit blue color
DEF blue PhBLxySpectrum { xy 0.1500 0.0600 }
# shiny blue appearance
DEF ShinyBlue PhBAppearance {
surface PhBHomogeneousSurface {
bsdf [
PhBSDF { intensity 0.2 spectrum USE blue
scatterer PhBDiffuseReflector {} },
PhBSDF { intensity 0.6 spectrum USE neutral
scatterer PhBPhongReflector { sharpness 20. } }
]
}
}
Group {
children [
Transform { # First child: - a light source
translation 0 0 10
children [
Shape {
geometry Sphere { radius 0.1 }
appearance USE Light
}
]
}
Transform { # Second child - a diffuse red sphere
translation 3 0 1
children [
Shape {
geometry Sphere { radius 2.3 }
appearance USE DiffuseRed
}
]
}
Transform { # Third child - a shiny blue box
translation -2.4 .2 1
rotation 0 1 1 .9
children [
Shape {
geometry Box {}
appearance USE ShinyBlue
}
]
}
] # end of children for world
}
# water-like atmosphere
PhBAtmosphere {
medium PhBMedium {
indexOfRefraction 1.5 0.0
scatteringCrossSection 0.05 # on the average one scattering or
absorptionCrossSection 0.05 # absorption event per 20 meters.
phaseFunction [ PhBPhF {
spectrum USE lightblue
phaseFunction PhBIsotropicPhaseFunction {}
} ]
}
}
#VRML V2.0 utf8
# prototype for a diffuse RGB image textured surface
PROTO RGBTexturedDiffuseSurface [
exposedField SFNode texture NULL
exposedField SFNode textureTransform NULL
exposedField SFNode textureProjection NULL
] {
PROTO DiffuseRed [] {
PROTO red [] { PhBLxySpectrum { xy 0.64 0.33 } }
PhBHomogeneousSurface {
bsdf [ PhBSDF { spectrum red {} scatterer PhBDiffuseReflector {} } ]
}
}
PROTO DiffuseGreen [] {
PROTO green [] { PhBLxySpectrum { xy 0.29 0.60 } }
PhBHomogeneousSurface {
bsdf [ PhBSDF { spectrum green {} scatterer PhBDiffuseReflector {} } ]
}
}
PROTO DiffuseBlue [] {
PROTO blue [] { PhBLxySpectrum { xy 0.15 0.06 } }
PhBHomogeneousSurface {
bsdf [ PhBSDF { spectrum blue {} scatterer PhBDiffuseReflector {} } ]
}
}
PhBTexturedSurface {
texture IS texture
surfaces [ DiffuseRed {}, DiffuseGreen {}, DiffuseBlue {}]
textureTransform IS textureTransform
textureProjection IS textureProjection
}
}
# use it like this:
Transform {
children Shape {
appearance DEF text1 PhBAppearance {
surface RGBTexturedDiffuseSurface {
texture ImageTexture { url "file:image.gif" }
}
}
geometry Sphere {}
}
}