用户:天狐Drift查看:0 回复:0 评论:0 创建时间:2021-05-23T13:13:25
【作品展示】

【作品介绍】
这个作品是一个可以互动的明信片,可以用鼠标旋转,缩放和移动场景。使用了panda3d我是海外华人,但这不是明信片是英文的原因。panda3d英文更简单 ;)
【作品源代码】
from panda3d.core import TextNode
from direct.gui.DirectGui import *
from direct.showbase.ShowBase import ShowBase
base = ShowBase()
class solarSystem(object):
def __init__(self):
self.title = OnscreenText(
text = "A Postcard to the Astronauts",
parent = base.a2dTopLeft, align = TextNode.A_left,
style = 1, fg = (1, 1, 1, 1), pos = (0.1, -0.23), scale = 0.13)
self.postcard = OnscreenText(
text = "Hello Chinese Astronauts, \nIt is amazing that we are the second ever country to land on Mars. \nAs a Chinese citizen living overseas, I'm feel proud to be a member of China. \nKeep up the great work!",
parent = base.a2dBottomCenter, align = TextNode.A_center,
style = 1, fg = (1, 1, 1, 1), pos = (0, 0.5), scale = 0.09)
base.trackball.node().set_pos(0, 40, 2)
self.orbitscale = 10
self.sizescale = 0.6
self.loadPlanets()
def loadPlanets(self):
self.orbit_root_mercury = render.attachNewNode('orbit_root_mercury')
self.orbit_root_venus = render.attachNewNode('orbit_root_venus')
self.orbit_root_mars = render.attachNewNode('orbit_root_mars')
self.orbit_root_jupiter = render.attachNewNode('orbit_root_jupiter')
self.orbit_root_saturn = render.attachNewNode('orbit_root_saturn')
self.orbit_root_uranus = render.attachNewNode('orbit_root_uranus')
self.orbit_root_neptune = render.attachNewNode('orbit_root_neptune')
self.orbit_root_earth = render.attachNewNode('orbit_root_earth')
self.orbit_root_moon = (
self.orbit_root_earth.attachNewNode('orbit_root_moon'))
self.sky = loader.loadModel("sky")
self.sky_tex = loader.loadTexture("stars.jpg")
self.sky.setTexture(self.sky_tex, 1)
self.sky.reparentTo(render)
self.sky.setScale(40)
self.sun = loader.loadModel("sphere")
self.sun_tex = loader.loadTexture("sun.jpg")
self.sun.setTexture(self.sun_tex, 1)
self.sun.reparentTo(render)
self.sun.setScale(6 * self.sizescale)
self.mercury = loader.loadModel("sphere")
self.mercury_tex = loader.loadTexture("mercury.jpg")
self.mercury.setTexture(self.mercury_tex, 1)
self.mercury.reparentTo(self.orbit_root_mercury)
self.mercury.setPos(0.5 * self.orbitscale, 0, 0)
self.mercury.setScale(0.4 * self.sizescale)
self.venus = loader.loadModel("sphere")
self.venus_tex = loader.loadTexture("venus.jpg")
self.venus.setTexture(self.venus_tex, 1)
self.venus.reparentTo(self.orbit_root_venus)
self.venus.setPos(-0.6 * self.orbitscale, 0, 0)
self.venus.setScale(0.9 * self.sizescale)
self.mars = loader.loadModel("sphere")
self.mars_tex = loader.loadTexture("mars.jpg")
self.mars.setTexture(self.mars_tex, 1)
self.mars.reparentTo(self.orbit_root_mars)
self.mars.setPos(-1 * self.orbitscale, 0, 0)
self.mars.setScale(0.5 * self.sizescale)
self.jupiter = loader.loadModel("sphere")
self.jupiter_tex = loader.loadTexture("jupiter.jpg")
self.jupiter.setTexture(self.jupiter_tex, 1)
self.jupiter.reparentTo(self.orbit_root_jupiter)
self.jupiter.setPos(1.2 * self.orbitscale, 0, 0)
self.jupiter.setScale(2 * self.sizescale)
self.saturn = loader.loadModel("sphere")
self.saturn_tex = loader.loadTexture("saturn.jpg")
self.saturn.setTexture(self.saturn_tex, 1)
self.saturn.reparentTo(self.orbit_root_saturn)
self.saturn.setPos(-1.4 * self.orbitscale, 0, 0)
self.saturn.setScale(1.8 * self.sizescale)
self.uranus = loader.loadModel("sphere")
self.uranus_tex = loader.loadTexture("uranus.jpg")
self.uranus.setTexture(self.uranus_tex, 1)
self.uranus.reparentTo(self.orbit_root_uranus)
self.uranus.setPos(1.6 * self.orbitscale, 0, 0)
self.uranus.setScale(1.6 * self.sizescale)
self.neptune = loader.loadModel("sphere")
self.neptune_tex = loader.loadTexture("neptune.jpg")
self.neptune.setTexture(self.neptune_tex, 1)
self.neptune.reparentTo(self.orbit_root_neptune)
self.neptune.setPos(-1.8 * self.orbitscale, 0, 0)
self.neptune.setScale(1.4 * self.sizescale)
self.earth = loader.loadModel("sphere")
self.earth_tex = loader.loadTexture("earth.jpg")
self.earth.setTexture(self.earth_tex, 1)
self.earth.reparentTo(self.orbit_root_earth)
self.earth.setScale(self.sizescale)
self.earth.setPos(0.8 * self.orbitscale, 0, 0)
self.orbit_root_moon.setPos(self.orbitscale, 0, 0)
self.moon = loader.loadModel("sphere")
self.moon_tex = loader.loadTexture("moon.jpg")
self.moon.setTexture(self.moon_tex, 1)
self.moon.reparentTo(self.orbit_root_moon)
self.moon.setScale(0.1 * self.sizescale)
self.moon.setPos(-0.1 * self.orbitscale, 0, 0)
w = solarSystem()
base.run()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn