Solar System 模拟太阳系
星空、太阳与点光源
星空背景
使用一张星空背景图为天空盒的六面贴图
1 | const cubeTextureLoader = new THREE.CubeTextureLoader() |
太阳
太阳位于星系中心点位置
1 | let sunGeometry = new THREE.SphereGeometry(16, 30, 30) |
点光源
为太阳添加pointLight点光源,
可以对pointLight的一些属性进行初始化:
- color 颜色
- intensity 强度
- distance 延伸距离
1 | const pointLight = new THREE.PointLight(0xffffff, 2, 300) |
行星的自转与公转
行星
一共要创建九个行星(算上冥王星),方便起见我们需要写一个创建函数:
1 | function createPlanet(radius,texture,position){ |
再为每个行星调用
1 | const mercury = createPlanet(3.2, mercuryTexture,28) |
自转与公转
如果需要所有行星都围绕太阳转动,可以把所有行星都加在太阳的子类中,
这样当太阳自时,其它行星也都随之转动,
但是这样存在一个问题:
不同行星的公转速度不同。
因此需要给每个行星都配置一个幽灵恒星,
假设这些恒星全都位于太阳位置,以不同速度自转:
1 | function createPlanet(radius,texture,position,ring){ |
再在animate中进行公转和自转的操作:
1 | function animate(){ |
行星环
土星和天王星都有星环,
因此需要修改行星工厂函数,绘制星环