ThreeJS官方示例

1 月球绕地球旋转

材质贴图的颜色显示可能和原图看起来不一致,需要设置色彩空间:

  • 线性色彩空间(LinearSRGBColorSpace):根据光照强度均匀分布
  • sRGB色彩空间(SRGBColorSpace):根据人眼观察调整颜色

在这里插入图片描述

// 地球、月球半径
const earth_radius = 1
const moon_radius = 0.27//设置透视相机
const camera = new THREE.PerspectiveCamera(46, window.innerWidth/window.innerHeight, 0.1,200)
camera.position.set(10, 5, 20)const scene = new THREE.Scene()//创建方向光,方向光照射的整个区域接受的光照强度一样 光强为3
const dirLight = new THREE.DirectionalLight(0xffffff, 3 )
dirLight.position.set(0,0,1)
scene.add(dirLight)const earthGeometry = new THREE.SphereGeometry(earth_radius, 16, 16)
//光亮材质
const earthMaterial = new THREE.MeshPhongMaterial({specular: 0x333333,	//材质的光亮程度和高光的颜色shininess: 5,	//高光部分亮度map: textureLoader.load(),	//加载地球贴图
})
// 设置色彩空间
earthMaterial.map.colorSpace = THREE.SRGBColorSpace
const earth = new Mesh(earthGeometry, earthMaterial)
scene.add(earth)//月球同理,不贴代码了//设置文字
const earthDiv = document.createElement('div')
earthDiv.className = 'label'
earthDiv.textContent = 'Earth'
earthDiv.style.backgroundColor = 'transparent'const earthLabel = new CSS2DObject(earthDiv)
earthLabel.position.set(1.5*earth_radius, 0, 0)
earthLabel.center.set(0,1)
earth.add(earthLabel)const render = new THREE.WebGLRenderer()
// 如果canvas画布输出模糊,需要设置像素比
render.setPixelRatio(window.devicePixelRatio)
render.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(render.domElement)// 文字渲染
const labelRender = new THREE.CSS2DRenderer()
labelRender.setSize(window.innerWidth, window.innerHeight)
labelRender.domElement.style.position = 'absolute'
labelRender.domELement.style.top = '0px'
document.body.appendChild(labelRender.domElement)//OrbitControls可以进行缩放、平移、旋转操作,实际上改变的是相机位置
//这里改变为render后无法旋转,不知道什么问题
const controls = new THREE.OrbitControls(camera, labelRender.domElement )window.addEventListener('resize', function() {camera.aspect = window.innerWidth / window.innerHeight camera.updateProjectionMatrix()renderer.setSize( window.innerWidth,window.innerHeight)labelRenderer.setSize( window.innerWidth,window.innerHeight)
})animate()
function animate(){requestAnimationFrame(animate)const elapsed = clock.getElapsedTime()moon.position.set(Math.sin(elapsed)*5,0,Math.cos(elapsed) * 5)\moon.rotation.x += 0.01;moon.rotation.y += 0.01;render.renderer(scene,camera)
}

2 正交相机

  • CSS2DRenderer:仅支持平移变换,用于将3d物体和html元素结合
  • CSS3DRenderer:通过transform属性将3d变换应用到dom元素上,不能使用材质和几何体
//设置相机前800高的内容
const frustumSize = 800
const aspect = window.innerWidth / window.innerHeight
const camera = new THREE.OrthographicCamera(frustumSize * aspect/-2,frustumSize*aspect/2, frustumSize/2,-frustumSize/2,1,1000)camera.position.set(-200,200,200)const scene = new THREE.Scene();
scene.background = new THREE.Color(0xf0f0f0);const material = new THREE.MeshBasicMaterial()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

svn和git的本质区别是什么

参考: https://blog.csdn.net/feiying0canglang/article/details/126550676 上边图中,跨越了区的箭头,它中间的区数据都会同步。例如:git checkout ,它是将本地仓库数据更新到暂存区和工作区的。\ 理解 gitlab和svn都…

计算机网络的体系结构的各层在整个过程中起到什么作用?

ps:本文章的图片内容来源都是来自于湖科大教书匠的视频,声明:仅供自己复习,里面加上了自己的理解 这里附上视频链接地址:1.6 计算机网络体系结构(4)—专用术语_哔哩哔哩_bilibili 目录 &#x…

Springboot项目启动报错:Command line is too long问题解决

启动项目报错:Error running ‘xxxxxxxx’: Command line is too long. Shorten command line for ‘xxxxxxxx’ or also for Application default configuration 方法一 点击提示中的:default:然后在弹出窗口中选择:JAR xxxx xxx&#xff0…

DataKit迁移MySQL到openGauss

前言 本文将分享DataKit迁移MySQL到openGauss的项目实战,供广大openGauss爱好者参考。 1. 下载操作系统 https://www.openeuler.org/zh/download https://support.huawei.com/enterprise/zh/doc/EDOC1100332931/1a643956 https://support.huawei.com/enterprise…

mysql优化,and和where的区别

前情提要:and 则是在表连接前过滤A表或B表里面哪些记录符合连接条件,同时会兼顾是left join还是right join。即 假如是左连接的话,如果左边表的某条记录不符合连接条件,那么它不进行连接,但是仍然留在结果集中&#xf…

JOSEF约瑟 静态中间继电器 RZY-600D 110VDC 六常开 导轨安装

RZ-D系列中间继电器 系列型号: RZY-004D中间继电器 RZL-004D中间继电器 RZY-022D中间继电器 RZL-022D中间继电器 RZY-112D中间继电器 RZL-112D中间继电器 RZY-202D中间继电器 RZL-202D中间继电器 RZY-002D中间继电器 RZL-002D中间继电器 RZY-060D中间继电器 RZL-060…

mysql学习打卡day17

今日成果: insert into products (name,quantity_in_stock,unit_price) values(t1,10,1.1),(tom,20,1.23),(t2,11,12.2); -- 一次插入多条数据 -- 字符串和日期需要加引号 -- PK代表主键记录的唯一标识 -- NN表示非空 -- AI表示自动增长 感谢各位读者查阅&#x…

锂电池基础知识

锂电池基础知识 锂电池容量 电池容量用**毫安时(mAh)**表示,如5200mAh电池,表示电池以5200mA5.2A的电流放电,可持续放电1小时。锂电池上标的电容量是4.2V放电至2.75V所获得的电量。 锂电池节数 锂电池的节数用几S来…

从CNN ,LSTM 到Transformer的综述

前情提要:文本大量参照了以下的博客,本文创作的初衷是为了分享博主自己的学习和理解。对于刚开始接触NLP的同学来说,可以结合唐宇迪老师的B站视频【【NLP精华版教程】强推!不愧是的最完整的NLP教程和学习路线图从原理构成开始学&a…

互斥锁/读写锁(Linux)

一、互斥锁 临界资源概念: 不能同时访问的资源,比如写文件,只能由一个线程写,同时写会写乱。 比如外设打印机,打印的时候只能由一个程序使用。 外设基本上都是不能共享的资源。 生活中比如卫生间,同一…

YOLOv8加入AIFI模块,附带项目源码链接

YOLOv8" 是一个新一代的对象检测框架,属于YOLO(You Only Look Once)系列的最新版本。YOLOv8中提及的AIFI(Attention-based Intrascale Feature Interaction)模块是一种用于增强对象检测性能的机制,它是…

Windows 上面双网卡网络,配置为优先IPV4

多数网络游戏加速器是不支持IPV6的,即便支持IPV6也不好用,原因是IPV6在大陆并不是普及的状态,很多资源是没有的。 所以本文会教大家怎么让双IP栈的用户,怎么配置优先适用IPV4,并且IPV6也还可以用。 跟着我的步骤来&am…

Docker 和 Kubernetes:容器化时代的崛起与演变

在过去的十年间,容器化技术彻底改变了软件开发和部署的面貌。 Docker 的登场无疑是这场变革的催化剂,它将应用和服务的打包、分发、部署流程标准化,让开发者的生活变得更加简单。 紧随其后,Kubernetes 作为容器编排的领军者&#…

网络安全态势感知平台概述

网络安全态势感知平台 文章目录 网络安全态势感知平台网络安全态势感知平台是什么一、网络安全态势感知平台是什么?二、网络安全态势感知很重要三、网络安全态势感知基础功能以某公司态势平台产品为例具体功能有以下: 网络安全态势感知平台是什么 网络安…

vue3中几种封装让后端传参请求方式

1、post请求,但是后端参数不是对象&#xff0c;是一个单参 后端 /// <summary> /// 获取项目服务详情 /// </summary> /// <param name"id"></param> /// <returns></returns> /// &l…

虹科分享丨汽车技术的未来:Netropy如何测试和确保汽车以太网的性能

来源&#xff1a;艾特保IT 虹科分享丨汽车技术的未来&#xff1a;Netropy如何测试和确保汽车以太网的性能 原文链接&#xff1a;https://mp.weixin.qq.com/s/G8wihrzqpJJOx5i0o63fkA 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #汽车以太网 #车载网络 #Netropy …

STM32第一节——初识STM32

1 硬件介绍 1.1 硬件平台 配套硬件&#xff1a;以野火的STM32 F1霸道开发板为平台&#xff0c;若用的是别的开发板&#xff0c;可自己进行移植。 1.2 什么是STM32 STM32是由意法半导体&#xff08;STMicroelectronics&#xff09;公司推出的一系列32位的ARM Cortex-M微控制…

D. Gargari and Permutations

很好玩的一道类似LCS的DP 问题 定义dp(i) 为考虑最后一个字符串&#xff0c;且选择a&#xff08;i&#xff09;得到的最大LIS值 然后枚举所有小于i的位置&#xff0c;可以更新的条件是 所有的字符串中都有a[j]<a[i] 这个用map一处理就好了 #include<bits/stdc.h> usi…

腾讯云轻量应用Windows服务器如何搭建幻兽帕鲁Palworld私服?

幻兽帕鲁/Palworld是一款2024年Pocketpair开发的开放世界生存制作游戏&#xff0c;在帕鲁的世界&#xff0c;玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。而帕鲁可以进行战斗、繁殖、协助玩家做农活&#xff0c;也…

PHP个人笔试题

笔试题集合 以下答案仅供参考&#xff0c;答案不断完善中~~~ 查出下属薪资大于主管的数据&#xff08;pid代表自己主观id&#xff09; idpidnamesalary10小明400020小红500031小王900042小刚300054小鱼5000 select m.* from salary m , salary l where m.pid l.id and m.sal…