Last active
April 20, 2018 20:07
-
-
Save SkyLeach/5eaea2a75d6de4fd14ef24566a101707 to your computer and use it in GitHub Desktop.
Panda3d Walking Panda Manual Demo Script showing Lighting Bug
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import sys | |
import os | |
import inspect | |
# threading code, only used for debug server right now. | |
# from threading import Thread | |
# from queue import Queue | |
from math import pi, sin, cos | |
import pprint | |
import logging | |
# project-specific | |
from direct.showbase.ShowBase import ShowBase | |
from direct.task import Task | |
from direct.actor.Actor import Actor | |
from direct.interval.IntervalGlobal import Sequence, Parallel, Func | |
from panda3d.core import Point3, PointLight, VBase4 | |
logger = logging.getLogger(__name__) | |
# set us up for relative imports since we are burried for testing | |
cmd_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( | |
inspect.currentframe()))[0])) | |
if cmd_folder not in sys.path: | |
sys.path.insert(0, cmd_folder) | |
parent_folder = os.path.realpath(os.path.abspath(os.path.join(os.path.split( | |
inspect.getfile(inspect.currentframe()))[0], '..', '..'))) | |
if parent_folder not in sys.path: | |
sys.path.insert(0, parent_folder) | |
# cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split( | |
# inspect.getfile(inspect.currentframe()))[0],"subfolder"))) | |
# if cmd_subfolder not in sys.path: | |
# sys.path.insert(0, cmd_subfolder) | |
# FLASK UI CODE DEMO | |
# try: | |
# from simgame.restapi import getFlaskApp | |
# except ImportError: | |
# # this is basically for internal testing only | |
# print ('Regular import failed, hope this is in debug mode...') | |
# pprint.pprint('cmd_folder: {}'.format(cmd_folder)) | |
# pprint.pprint('parent_folder: {}'.format(parent_folder)) | |
# pprint.pprint(sys.path) | |
# from restapi import getFlaskApp | |
# TODO: move to settings | |
cam_speed = 0.5 | |
class TestLights(ShowBase): | |
"""TestLights | |
Credit: Skyboxing code borrowed from skybox sample code by CheapestPixels | |
on GitHub | |
""" | |
# Bookkeeping for the rotation around the model | |
angle = 0.0 | |
pitch = 0.0 | |
adjust_angle = 0 | |
adjust_pitch = 0 | |
last_time = 0.0 | |
# used to keep track of lights and parents for testing | |
testlights = [] | |
_restart = False | |
_full_restart = False | |
def __init__(self): | |
ShowBase.__init__(self) | |
# Load and transform the panda actor. | |
self.pandaActor = Actor("models/panda-model", | |
{"walk": "models/panda-walk4"}) | |
self.pandaActor.setScale(0.005, 0.005, 0.005) | |
self.pandaActor.reparentTo(self.render) | |
# Loop its animation. | |
self.pandaActor.loop("walk") | |
# load tutorial scene | |
self.scene = self.loader.loadModel("models/environment") | |
# Reparent the model to render. | |
self.scene.reparentTo(self.render) | |
# Apply scale and position transforms on the model. | |
self.scene.setScale(0.25, 0.25, 0.25) | |
self.scene.setPos(-8, 42, 0) | |
# Create the four lerp intervals needed for the panda to | |
# walk back and forth. | |
pandaPosInterval1 = self.pandaActor.posInterval( | |
13, | |
Point3(0, -10, 0), | |
startPos=Point3(0, 10, 0)) | |
pandaPosInterval2 = self.pandaActor.posInterval( | |
13, | |
Point3(0, 10, 0), | |
startPos=Point3(0, -10, 0)) | |
pandaHprInterval1 = self.pandaActor.hprInterval( | |
3, | |
Point3(180, 0, 0), | |
startHpr=Point3(0, 0, 0)) | |
pandaHprInterval2 = self.pandaActor.hprInterval( | |
3, | |
Point3(0, 0, 0), | |
startHpr=Point3(180, 0, 0)) | |
if logger.isEnabledFor(logging.DEBUG): | |
logger.debug('Setting up Parallels') | |
pandaPosInterval1 = Parallel( | |
pandaPosInterval1, | |
Func(self.dumpLightPos)) | |
pandaPosInterval2 = Parallel( | |
pandaPosInterval2, | |
Func(self.dumpLightPos)) | |
pandaHprInterval1 = Parallel( | |
pandaHprInterval1, | |
Func(self.dumpLightPos)) | |
pandaHprInterval2 = Parallel( | |
pandaHprInterval2, | |
Func(self.dumpLightPos)) | |
# Create and play the sequence that coordinates the intervals. | |
self.pandaPace = Sequence(pandaPosInterval1, | |
pandaHprInterval1, | |
pandaPosInterval2, | |
pandaHprInterval2, | |
name="pandaPace") | |
self.pandaPace.loop() | |
# Accept keypresses for looking around | |
self.camera.set_pos(sin(self.angle) * 20, -cos(self.angle) * 20, 0) | |
self.camera.look_at(0, 0, 0) | |
# Key events and camera movement task | |
self.accept("arrow_left", self.adjust_turning, [-1.0, 0.0]) | |
self.accept("arrow_left-up", self.adjust_turning, [1.0, 0.0]) | |
self.accept("arrow_right", self.adjust_turning, [1.0, 0.0]) | |
self.accept("arrow_right-up", self.adjust_turning, [-1.0, 0.0]) | |
self.accept("arrow_up", self.adjust_turning, [0.0, 1.0]) | |
self.accept("arrow_up-up", self.adjust_turning, [0.0, -1.0]) | |
self.accept("arrow_down", self.adjust_turning, [0.0, -1.0]) | |
self.accept("arrow_down-up", self.adjust_turning, [0.0, 1.0]) | |
self.accept("escape", sys.exit) | |
self.taskMgr.add(self.update_camera, 'adjust camera', sort=10) | |
def emptyTest(self): | |
"""emptyTest | |
Just an empty function to show the scene pre-testing | |
""" | |
pass | |
# def debugServer(self): | |
# # self.debug_server = getFlaskApp() | |
def dumpLightPos(self, testlights=None): | |
if not testlights: | |
testlights = self.testlights | |
logger.debug('Light transforms for {} lights'.format( | |
len(self.testlights))) | |
for ndex, (light, parent) in enumerate(testlights): | |
try: | |
logger.debug('Parent getPos/getPos(render):') | |
logger.debug('relative: {} absolute: {}'.format( | |
pprint.pformat(parent.getPos()), | |
pprint.pformat(parent.getPos(self.render)), | |
)) | |
logger.debug('Light getPos/getPos(render):') | |
logger.debug('relative: {} absolute: {}'.format( | |
pprint.pformat(light.getPos()), | |
pprint.pformat(light.getPos(self.render)), | |
)) | |
logger.debug('Parent getHpr/getHpr(render):') | |
logger.debug('relative: {} absolute: {}'.format( | |
pprint.pformat(parent.getHpr()), | |
pprint.pformat(parent.getHpr(self.render)), | |
)) | |
logger.debug('Light getHpr/getHpr(render):') | |
logger.debug('relative: {} absolute: {}'.format( | |
pprint.pformat(light.getHpr()), | |
pprint.pformat(parent.getHpr(self.render)), | |
)) | |
except AssertionError: | |
logger.error( | |
'Nodepath for light {} is no longer valid.'.format( | |
pprint.pformat(light) | |
)) | |
logger.warn('reloading light path \'plight\' and recalling.') | |
plight = parent.find('plight') | |
logger.warn('recalling with found NodePath {}.'.format( | |
pprint.pformat(plight))) | |
self.dumpLightPos([(plight, parent)]) | |
def addPointToActor(self, illumscene=False): | |
# Add pointlight code from manual | |
plight = PointLight('plight') | |
plight.setShadowCaster(True) | |
plight.setColor(VBase4(0.4, 0.4, 0.8, 1)) | |
# Leave attenuation default for right now. | |
# plight.setAttenuation((1, 0.99, 0)) | |
# if logger.isEnabledFor(logging.DEBUG): | |
# logger.debug('dir(plight):') | |
# logger.debug(pprint.pformat(dir(plight))) | |
#instead of adding to scene, add to actor | |
parent = self.pandaActor | |
# bind the light to the Actor, it will move | |
plnp = parent.attachNewNode(plight) | |
# bind the light to the Scene, then translate the scene, the | |
# light will not move | |
plnp.setPos(.5, .5, 3) | |
# make everything affected | |
if illumscene: | |
self.scene.setLight(plnp) | |
else: | |
self.pandaActor.setLight(plnp) | |
self.testlights.append((plnp, parent)) | |
def remove_lights(self): | |
for light, parent in self.testlights: | |
light.removeNode() | |
def adjust_turning(self, heading, pitch): | |
self.adjust_angle += heading | |
self.adjust_pitch += pitch | |
def update_camera(self, task): | |
if task.time != 0.0: | |
dt = task.time - self.last_time | |
self.last_time = task.time | |
self.angle += pi * dt * self.adjust_angle * cam_speed | |
self.pitch += pi * dt * self.adjust_pitch * cam_speed | |
# Why /2.001 and not an even 2.0? Because then we'd have to set_Hpr | |
# explicitly, as look_at can't deduce the heading when the camera | |
# is exactly above/below the spheres center. | |
if self.pitch > pi / 2.001: | |
self.pitch = pi / 2.001 | |
if self.pitch < -pi / 2.001: | |
self.pitch = -pi / 2.001 | |
self.camera.set_pos( | |
sin(self.angle) * cos(abs(self.pitch)) * 20, | |
-cos(self.angle) * cos(abs(self.pitch)) * 20, | |
sin(self.pitch) * 20) | |
self.camera.look_at(0, 0, 0) | |
return Task.cont | |
if __name__ == '__main__': | |
if len(sys.argv) > 1 and sys.argv[1] == '--debug': | |
logging.basicConfig(level=logging.DEBUG) | |
else: | |
logging.basicConfig(level=logging.INFO) | |
app = None | |
# use this for reloading a panda game while retaining state. | |
# this can be useful for turning on and off options that affect the entire | |
# engine. | |
while not app or app._restart: | |
if not app: | |
app = TestLights() | |
if app._full_restart: | |
app = TestLights() | |
else: | |
app._restart = False | |
# test function are bound to instance to speed up the tests | |
tests = [ | |
('Default ambient-only for Manual Panda Scene.', | |
app.emptyTest, None), | |
# ('Enable Debug REST server.', | |
# app.debugServer, None), | |
('Pointlights on Actor', app.addPointToActor, [False]), | |
('Pointlights on Actor but illuminate whole Scene', | |
app.addPointToActor, [True]), | |
# ('Pointlights on SceneObj', app.addPointToScene), | |
# ('Pointlights on moving SceneObj', app.MovingStaticTest), | |
] | |
for ndex, (message, test_step, testargs) in enumerate(tests): | |
app.remove_lights() | |
logger.info('Test {}: {}'.format(ndex, message)) | |
if testargs: | |
test_step(*testargs) | |
else: | |
test_step() | |
try: | |
app.run() | |
except SystemExit: | |
pass |
Output Logs:
Known pipe types:
CocoaGraphicsPipe
(all display modules loaded.)
DEBUG:__main__:Setting up Parallels
INFO:__main__:Test 0: Default ambient-only for Manual Panda Scene.
DEBUG:__main__:Light transforms for 0 lights
INFO:__main__:Test 1: Pointlights on Actor
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, -9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, -10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, 9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, 10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, -9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, -10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, 9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, 10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
INFO:__main__:Test 2: Pointlights on Actor but illuminate whole Scene
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
Assertion failed: !is_empty() at line 983 of panda/src/pgraph/nodePath.cxx
ERROR:__main__:Nodepath for light **removed** is no longer valid.
WARNING:__main__:reloading light path 'plight' and recalling.
WARNING:__main__:recalling with found NodePath render/panda_walk_character/plight.
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, -9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, -9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
Assertion failed: !is_empty() at line 983 of panda/src/pgraph/nodePath.cxx
ERROR:__main__:Nodepath for light **removed** is no longer valid.
WARNING:__main__:reloading light path 'plight' and recalling.
WARNING:__main__:recalling with found NodePath render/panda_walk_character/plight.
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, -10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, -10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
Assertion failed: !is_empty() at line 983 of panda/src/pgraph/nodePath.cxx
ERROR:__main__:Nodepath for light **removed** is no longer valid.
WARNING:__main__:reloading light path 'plight' and recalling.
WARNING:__main__:recalling with found NodePath render/panda_walk_character/plight.
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, 9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, 9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
Assertion failed: !is_empty() at line 983 of panda/src/pgraph/nodePath.cxx
ERROR:__main__:Nodepath for light **removed** is no longer valid.
WARNING:__main__:reloading light path 'plight' and recalling.
WARNING:__main__:recalling with found NodePath render/panda_walk_character/plight.
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, 10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, 10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
Assertion failed: !is_empty() at line 983 of panda/src/pgraph/nodePath.cxx
ERROR:__main__:Nodepath for light **removed** is no longer valid.
WARNING:__main__:reloading light path 'plight' and recalling.
WARNING:__main__:recalling with found NodePath render/panda_walk_character/plight.
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, -9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, -9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
Assertion failed: !is_empty() at line 983 of panda/src/pgraph/nodePath.cxx
ERROR:__main__:Nodepath for light **removed** is no longer valid.
WARNING:__main__:reloading light path 'plight' and recalling.
WARNING:__main__:recalling with found NodePath render/panda_walk_character/plight.
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, -10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, -10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
Assertion failed: !is_empty() at line 983 of panda/src/pgraph/nodePath.cxx
ERROR:__main__:Nodepath for light **removed** is no longer valid.
WARNING:__main__:reloading light path 'plight' and recalling.
WARNING:__main__:recalling with found NodePath render/panda_walk_character/plight.
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, 9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, 9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
Assertion failed: !is_empty() at line 983 of panda/src/pgraph/nodePath.cxx
ERROR:__main__:Nodepath for light **removed** is no longer valid.
WARNING:__main__:reloading light path 'plight' and recalling.
WARNING:__main__:recalling with found NodePath render/panda_walk_character/plight.
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, 10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, 10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
Assertion failed: !is_empty() at line 983 of panda/src/pgraph/nodePath.cxx
ERROR:__main__:Nodepath for light **removed** is no longer valid.
WARNING:__main__:reloading light path 'plight' and recalling.
WARNING:__main__:recalling with found NodePath render/panda_walk_character/plight.
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, -9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, -9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light transforms for 2 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
Assertion failed: !is_empty() at line 983 of panda/src/pgraph/nodePath.cxx
ERROR:__main__:Nodepath for light **removed** is no longer valid.
WARNING:__main__:reloading light path 'plight' and recalling.
WARNING:__main__:recalling with found NodePath render/panda_walk_character/plight.
reset testlights list each iteration, new log
Known pipe types:
CocoaGraphicsPipe
(all display modules loaded.)
DEBUG:__main__:Setting up Parallels
INFO:__main__:Test 0: Default ambient-only for Manual Panda Scene.
DEBUG:__main__:Light transforms for 0 lights
INFO:__main__:Test 1: Pointlights on Actor
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, -9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, -10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, 9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, 10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
INFO:__main__:Test 2: Pointlights on Actor but illuminate whole Scene
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(0.0025, -9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(0, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, -10, 0) absolute: LPoint3f(0, -10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, -10.0025, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light transforms for 1 lights
DEBUG:__main__:Parent getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0, 10, 0) absolute: LPoint3f(0, 10, 0)
DEBUG:__main__:Light getPos/getPos(render):
DEBUG:__main__:relative: LPoint3f(0.5, 0.5, 3) absolute: LPoint3f(-0.0025, 9.9975, 0.015)
DEBUG:__main__:Parent getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(180, 0, 0) absolute: LVecBase3f(180, 0, 0)
DEBUG:__main__:Light getHpr/getHpr(render):
DEBUG:__main__:relative: LVecBase3f(0, 0, 0) absolute: LVecBase3f(180, 0, 0)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
usage:
python panda_test_lights.py [--debug]