three.js旋转,材质,灯光使用 —— 太阳地球月亮运动
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旋转,材质,灯光使用 —— 太阳地球月亮运动相关推荐
- Python模拟太阳-地球-月亮运动模型
作者 | Charles,cv方向在读研究生.[Charles 的皮卡丘]专注于分享有趣好玩的Python小项目(AI.爬虫等等). 来源 | Charles 的皮卡丘 编辑 | Jane [导语]春 ...
- openGl编程实现一个太阳地球月亮的一个简单运动系统
一. 项目目的 使用openGl编程实现一个太阳地球月亮的一个简单运动系统,要求实现三维转动.点光源变化.纹理映射及阴影等效果 二. 任务实现 \1. 满足三者实际大小/距离的比例关系: \2. 满足 ...
- Python模拟登录,matplotlib模块,Python模拟太阳-地球-月亮运动模型
前言 利用python模拟太阳-地球-月亮运动模型. 让我们愉快地开始吧~ 开发工具 **Python版本:**3.6.4 相关模块: pygame模块: matplotlib模块: numpy模块: ...
- webgl 绘制太阳 地球 月亮
目录 1.开发环境 2.内容说明 1.计算球体的坐标和纹理 2.求顶点索引 3.数据加载到缓存中 4.绘制球体 5.其他 3.运行结果及代码下载 1.开发环境 浏览器 : 火狐 firefox(配置参 ...
- CSS太阳地球月亮转圈圈loading
一个css例子 css太阳 月亮 地球转转转 知识点总结: justify-content: center; justify-content 用于设置或检索弹性盒子元 素在主轴(横轴)方向上的对齐方式 ...
- OpenGl太阳地球月亮运动系统
在讲解这个运动系统,首先我们的来讲解OpenGl里有关几个图形变换的知识,这里就以球为例,我们需要知道将球平移,旋转的2个知识.因为系统必须用到平移和旋转. 1 平移变换: glTranslatef( ...
- Unity学生作业:太阳地球月亮自转和公转
1.第一步 打开Unity. 2.第二步 在场景中创建3个Sphere球体并分别命名为Moon, Sun和Earth. 在命名完之后调整3个球的大小和位置,并贴上贴图.将Moon作为Earth的子物体 ...
- 纯css3制作的太阳地球月亮效果
上课无聊看到的,虽然有很多兼容性问题,但先保存吧,原文链接如下: http://buluo.qq.com/p/detail.html?bid=16531&pid=9399270-1461480 ...
- javascript-动画animation自己学习做太阳地球和月球运转动画;
首先声明一点:自己学习的程序来源于: https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Basic_animat ...
最新文章
- UA MATH567 高维统计II 随机向量8 图的Max-cut问题 0.5近似算法的运行时间分析
- Android APK的加固方法
- C# 实例练习——字符串处理(第三天)
- android使用自定义,Android 自定义View的使用
- 【Flink】Apache Flink 1.13.0 正式发布,流处理应用更加简单高效
- 吃透web前端秘籍,来听听大佬是怎么说的
- [转载] lstm时间序列预测_pytorch入门使用PyTorch进行LSTM时间序列预测
- 戴森工程师揭秘Dyson 360 Eye吸尘机器人的故事:先要做到“智能”
- Tomcat Https配置
- 【opencv学习笔记】SetImageROI函数设置ROI区域的作用及用法
- 检验成果的软指标与硬指标
- 小米路由器梅林_小米路由器刷Merlin
- Window winload.efi 文件丢失解决方法
- mysql的数据备份及恢复
- 埃加洛尔虚拟服务器,致我终将逝去的二区:新一轮大服务器实装
- 推荐几款网盘资源搜索站点,必须收藏 !
- X86平台操作系统概览 zz
- 2路继电器控制直流电机正反转问题
- 【Python笔记】pyqt5进度条-多线程图像分块处理防止窗体卡顿
- ProcessOn第一次使用教程