猫史档案馆


【Python作品分享】A Postcard to the Astronauts【36强进10】

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


【作品展示】

center_image

 

【作品介绍】

这个作品是一个可以互动的明信片,可以用鼠标旋转,缩放和移动场景。使用了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


回复

上一页1 页 / 共 0下一页