87 lines
2.5 KiB
Python
87 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
简单颜色测试程序
|
|
"""
|
|
|
|
from direct.showbase.ShowBase import ShowBase
|
|
from panda3d.core import LineSegs, Vec3, Vec4
|
|
from direct.task import Task
|
|
|
|
class ColorTest(ShowBase):
|
|
def __init__(self):
|
|
ShowBase.__init__(self)
|
|
|
|
# 设置背景色
|
|
self.setBackgroundColor(0.2, 0.2, 0.3)
|
|
|
|
# 设置相机位置
|
|
self.cam.setPos(0, -10, 0)
|
|
self.cam.lookAt(0, 0, 0)
|
|
|
|
# 创建测试线段
|
|
self.createTestLines()
|
|
|
|
# 颜色变化任务
|
|
self.taskMgr.add(self.colorChangeTask, "colorChange")
|
|
|
|
self.time = 0
|
|
|
|
def createTestLines(self):
|
|
"""创建测试线段"""
|
|
# 创建X轴线段
|
|
x_lines = LineSegs()
|
|
x_lines.setThickness(5.0)
|
|
x_lines.moveTo(-3, 0, 0)
|
|
x_lines.drawTo(3, 0, 0)
|
|
|
|
self.x_axis = self.render.attachNewNode(x_lines.create())
|
|
self.x_axis.setColor(1, 0, 0, 1) # 红色
|
|
self.x_axis.setLightOff()
|
|
|
|
# 创建Y轴线段
|
|
y_lines = LineSegs()
|
|
y_lines.setThickness(5.0)
|
|
y_lines.moveTo(0, -3, 0)
|
|
y_lines.drawTo(0, 3, 0)
|
|
|
|
self.y_axis = self.render.attachNewNode(y_lines.create())
|
|
self.y_axis.setColor(0, 1, 0, 1) # 绿色
|
|
self.y_axis.setLightOff()
|
|
|
|
# 创建Z轴线段
|
|
z_lines = LineSegs()
|
|
z_lines.setThickness(5.0)
|
|
z_lines.moveTo(0, 0, -3)
|
|
z_lines.drawTo(0, 0, 3)
|
|
|
|
self.z_axis = self.render.attachNewNode(z_lines.create())
|
|
self.z_axis.setColor(0, 0, 1, 1) # 蓝色
|
|
self.z_axis.setLightOff()
|
|
|
|
print("测试轴创建完成")
|
|
print("X轴颜色:", self.x_axis.getColor())
|
|
print("Y轴颜色:", self.y_axis.getColor())
|
|
print("Z轴颜色:", self.z_axis.getColor())
|
|
|
|
def colorChangeTask(self, task):
|
|
"""颜色变化任务"""
|
|
self.time += globalClock.getDt()
|
|
|
|
# 每2秒变换一次颜色
|
|
if int(self.time) % 2 == 0:
|
|
# 原色
|
|
self.x_axis.setColor(1, 0, 0, 1)
|
|
self.y_axis.setColor(0, 1, 0, 1)
|
|
self.z_axis.setColor(0, 0, 1, 1)
|
|
else:
|
|
# 白色
|
|
self.x_axis.setColor(1, 1, 1, 1)
|
|
self.y_axis.setColor(1, 1, 1, 1)
|
|
self.z_axis.setColor(1, 1, 1, 1)
|
|
|
|
return task.cont
|
|
|
|
if __name__ == "__main__":
|
|
app = ColorTest()
|
|
app.run() |