import * as THREE from 'three'
//引入控制器
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'const { log } = console//创建场景
const scene = new THREE.Scene();
scene.background = new THREE.Color("#000")
//scene.environment = new THREE.Color("#ddd")//创建相机添加至场景
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(0, 10, 1)//创建渲染器
const renderer = new THREE.WebGLRenderer({antialias: true // 搞锯齿
})
renderer.setSize(window.innerWidth, window.innerHeight)//添加辅助线
const axes = new THREE.AxesHelper(5)
//scene.add(axes)
axes.position.set(0, 0, 0)//创建星球
const createBall = (sizeArray) => {const spereGeometry = new THREE.SphereGeometry(...sizeArray)const spereMaterial = new THREE.MeshLambertMaterial()return new THREE.Mesh(spereGeometry, spereMaterial)
}//创建地球组级太阳组
const earchGroup = new THREE.Group()
const sunGroup = new THREE.Group()const earch = createBall([1, 20, 20])
earch.material.map = new THREE.TextureLoader().load('./earch.jpg')
earchGroup.add(earch)const moon = createBall([.3, 20, 20])
moon.material.map = new THREE.TextureLoader().load('./moon.png')
earchGroup.add(moon)
moon.position.set(0, 0, 2)
earchGroup.add(moon)
earchGroup.position.x = 6//scene.add(earchGroup)
const spereGeometry = new THREE.SphereGeometry(2, 30, 30)
const spereMaterial = new THREE.MeshBasicMaterial()const sun = new THREE.Mesh(spereGeometry, spereMaterial)
sun.material.map = new THREE.TextureLoader().load('./sun.jpg')
sunGroup.add(sun)
sunGroup.add(earchGroup)
scene.add(sunGroup)//添加环境 光
// const alight = new THREE.AmbientLight("#FFF", .7)
// scene.add(alight)//添加点光源
const light = new THREE.PointLight({color: "0xff0000",intensity: 100
});
light.position.set(0, 0, 0);
scene.add(light);
//添加控制器,并设置阻尼
const controls = new OrbitControls(camera, renderer.domElement)
controls.enableDamping = truedocument.body.appendChild(renderer.domElement)const clock = new THREE.Clock()
const render = () => {const time = clock.getElapsedTime()earchGroup.rotation.y = timeearch.rotation.y = timemoon.rotation.y = timesunGroup.rotation.y = timecontrols.update()renderer.render(scene, camera)requestAnimationFrame(render)
}
render()

three.js旋转,材质,灯光使用 —— 太阳地球月亮运动相关推荐

  1. Python模拟太阳-地球-月亮运动模型

    作者 | Charles,cv方向在读研究生.[Charles 的皮卡丘]专注于分享有趣好玩的Python小项目(AI.爬虫等等). 来源 | Charles 的皮卡丘 编辑 | Jane [导语]春 ...

  2. openGl编程实现一个太阳地球月亮的一个简单运动系统

    一. 项目目的 使用openGl编程实现一个太阳地球月亮的一个简单运动系统,要求实现三维转动.点光源变化.纹理映射及阴影等效果 二. 任务实现 \1. 满足三者实际大小/距离的比例关系: \2. 满足 ...

  3. Python模拟登录,matplotlib模块,Python模拟太阳-地球-月亮运动模型

    前言 利用python模拟太阳-地球-月亮运动模型. 让我们愉快地开始吧~ 开发工具 **Python版本:**3.6.4 相关模块: pygame模块: matplotlib模块: numpy模块: ...

  4. webgl 绘制太阳 地球 月亮

    目录 1.开发环境 2.内容说明 1.计算球体的坐标和纹理 2.求顶点索引 3.数据加载到缓存中 4.绘制球体 5.其他 3.运行结果及代码下载 1.开发环境 浏览器 : 火狐 firefox(配置参 ...

  5. CSS太阳地球月亮转圈圈loading

    一个css例子 css太阳 月亮 地球转转转 知识点总结: justify-content: center; justify-content 用于设置或检索弹性盒子元 素在主轴(横轴)方向上的对齐方式 ...

  6. OpenGl太阳地球月亮运动系统

    在讲解这个运动系统,首先我们的来讲解OpenGl里有关几个图形变换的知识,这里就以球为例,我们需要知道将球平移,旋转的2个知识.因为系统必须用到平移和旋转. 1 平移变换: glTranslatef( ...

  7. Unity学生作业:太阳地球月亮自转和公转

    1.第一步 打开Unity. 2.第二步 在场景中创建3个Sphere球体并分别命名为Moon, Sun和Earth. 在命名完之后调整3个球的大小和位置,并贴上贴图.将Moon作为Earth的子物体 ...

  8. 纯css3制作的太阳地球月亮效果

    上课无聊看到的,虽然有很多兼容性问题,但先保存吧,原文链接如下: http://buluo.qq.com/p/detail.html?bid=16531&pid=9399270-1461480 ...

  9. javascript-动画animation自己学习做太阳地球和月球运转动画;

    首先声明一点:自己学习的程序来源于: https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Basic_animat ...

最新文章

  1. UA MATH567 高维统计II 随机向量8 图的Max-cut问题 0.5近似算法的运行时间分析
  2. Android APK的加固方法
  3. C# 实例练习——字符串处理(第三天)
  4. android使用自定义,Android 自定义View的使用
  5. 【Flink】Apache Flink 1.13.0 正式发布,流处理应用更加简单高效
  6. 吃透web前端秘籍,来听听大佬是怎么说的
  7. [转载] lstm时间序列预测_pytorch入门使用PyTorch进行LSTM时间序列预测
  8. 戴森工程师揭秘Dyson 360 Eye吸尘机器人的故事:先要做到“智能”
  9. Tomcat Https配置
  10. 【opencv学习笔记】SetImageROI函数设置ROI区域的作用及用法
  11. 检验成果的软指标与硬指标
  12. 小米路由器梅林_小米路由器刷Merlin
  13. Window winload.efi 文件丢失解决方法
  14. mysql的数据备份及恢复
  15. 埃加洛尔虚拟服务器,致我终将逝去的二区:新一轮大服务器实装
  16. 推荐几款网盘资源搜索站点,必须收藏 !
  17. X86平台操作系统概览 zz
  18. 2路继电器控制直流电机正反转问题
  19. 【Python笔记】pyqt5进度条-多线程图像分块处理防止窗体卡顿
  20. ProcessOn第一次使用教程

热门文章

  1. 阿里云视频云视频增强领域最新研究成果入选国际顶级学术会议
  2. 3.20上午学习英语听力
  3. BCG 使用之CBCGPCalendar控件
  4. 网上酒店客房预定系统数据库设计
  5. 我使用pangu模块做了一个文本格式化小工具!
  6. 上海市高等学校计算机等级一级,上海市高等学校计算机等级考试一级.pdf
  7. 使用ShareSDK进行第三方(登录,分享)
  8. option/options标签
  9. aspx网页_微软网页设计工具Expression Web快速入门
  10. 陈凯歌: 大创意大《无极》