in tacto/renderer.py [0:0]
def _init_light(self):
"""
Set up light
"""
# Load light from config file
light = self.conf.sensor.lights
origin = np.array(light.origin)
xyz = []
if light.polar:
# Apply polar coordinates
thetas = light.xrtheta.thetas
rs = light.xrtheta.rs
xs = light.xrtheta.xs
for i in range(len(thetas)):
theta = np.pi / 180 * thetas[i]
xyz.append([xs[i], rs[i] * np.cos(theta), rs[i] * np.sin(theta)])
else:
# Apply cartesian coordinates
xyz = np.array(light.xyz.coords)
colors = np.array(light.colors)
intensities = light.intensities
# Save light nodes
self.light_nodes = []
self.light_poses0 = []
for i in range(len(colors)):
if not self.spot_light_enabled:
# create pyrender.PointLight
color = colors[i]
light_pose_0 = euler2matrix(
angles=[0, 0, 0], translation=xyz[i] + origin
)
light = pyrender.PointLight(color=color, intensity=intensities[i])
elif self.spot_light_enabled:
# create pyrender.SpotLight
color = colors[i]
theta = np.pi / 180 * (thetas[i] - 90)
tuning_angle = -np.pi / 16
light_pose_0 = euler2matrix(
xyz="yzx",
angles=[0, tuning_angle, theta],
translation=xyz[i] + origin,
)
light = pyrender.SpotLight(
color=color,
intensity=intensities[i],
innerConeAngle=0,
outerConeAngle=np.pi / 3,
)
light_node = pyrender.Node(light=light, matrix=light_pose_0)
self.scene.add_node(light_node)
self.light_nodes.append(light_node)
self.light_poses0.append(light_pose_0)
self.current_light_nodes.append(light_node)
# Add extra light node into scene_depth
light_node_depth = pyrender.Node(light=light, matrix=light_pose_0)
self.scene_depth.add_node(light_node_depth)