3.js - THREE.CubeTextureLoader() 添加环境纹理,以创建立方体贴图

使用 THREE.CubeTextureLoader() 添加环境纹理,以创建立方体贴图

在这里插入图片描述

不使用 THREE.CubeTextureLoader() 的时候

在这里插入图片描述

源码


import * as THREE from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js'
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'const scene = new THREE.Scene()const camera = new THREE.PerspectiveCamera(100, window.innerHeight / window.innerHeight, 1, 50)
camera.position.set(0, 0, 10)
scene.add(camera)const axesHelper = new THREE.AxesHelper(5)
scene.add(axesHelper)// --------------------------------------------------------------------// const ambientLight = new THREE.AmbientLight(0xffffff, 0.5) // 环境光
// scene.add(ambientLight)
// const pointLight = new THREE.PointLight(0xffffff, 0.5) // 点光源
// pointLight.position.set(2, 3, 4)
// scene.add(pointLight)const directionLight = new THREE.DirectionalLight('#ffffff', 1) // 平行光
directionLight.castShadow = true // 把自己的阴影投射到别的物体上
directionLight.position.set(0, 0, 200)
scene.add(directionLight)/*THREE.CubeTextureLoader()添加环境纹理,这个方法,接收一个包含六个图像URL的数组作为参数,并自动加载这些图像,以创建立方体贴图
*/
const cubeTextureLoader = new THREE.CubeTextureLoader()
const envMapTexture = cubeTextureLoader.load(['../public/textures/environmentMaps/0/px.jpg','../public/textures/environmentMaps/0/nx.jpg','../public/textures/environmentMaps/0/py.jpg','../public/textures/environmentMaps/0/ny.jpg','../public/textures/environmentMaps/0/pz.jpg','../public/textures/environmentMaps/0/nz.jpg'
])
scene.environment = envMapTexture
scene.background = envMapTexture// --------------------------------------------------------------------const depthMaterial = new THREE.MeshDepthMaterial({depthPacking: THREE.RGBADepthPacking
})const textureLoader = new THREE.TextureLoader()
// 加载模型纹理
const modelTexture = textureLoader.load('../public/assets/model/LeePerrySmith/color.jpg')
// 加载模型的法向纹理
const normalTexture = textureLoader.load('../public/assets/model/LeePerrySmith/normal.jpg')
const material = new THREE.MeshStandardMaterial({map: modelTexture,normalMap: normalTexture
})// 模型加载
const gltfLoader = new GLTFLoader()
gltfLoader.load('../public/assets/model/LeePerrySmith/LeePerrySmith.glb', gltf => {// console.log('gltf=', gltf)const mesh = gltf.scene.children[0]// console.log('mesh=', mesh)// @ts-ignoremesh.material = materialmesh.castShadow = true // 把自己的阴影投射到别的物体上// 设定自定义的深度材质mesh.customDepthMaterial = depthMaterialscene.add(mesh)
})// 一个平面
const plane = new THREE.Mesh(new THREE.PlaneGeometry(10, 10),new THREE.MeshStandardMaterial({side: THREE.DoubleSide})
)
plane.position.set(0, 0, -6)
plane.receiveShadow = true // 接收,来自其他光源投射的阴影
scene.add(plane)// --------------------------------------------------------------------//#region
const renderer = new THREE.WebGLRenderer()
renderer.setSize(window.innerWidth, window.innerHeight)
renderer.shadowMap.enabled = true // 允许渲染器投射阴影
document.body.appendChild(renderer.domElement)const controls = new OrbitControls(camera, renderer.domElement)
controls.enableDamping = trueconst clock = new THREE.Clock()
function animate() {controls.update()const time = clock.getElapsedTime()// customUniforms.uTime.value = timerequestAnimationFrame(animate)renderer.render(scene, camera)
}
animate()window.addEventListener('resize', () => {camera.aspect = window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()renderer.setSize(window.innerWidth, window.innerHeight)renderer.setPixelRatio(window.devicePixelRatio)
})
//#endregion

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

SHAP 模型可视化 + 参数搜索策略在轴承故障诊断中的应用

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Python轴承故障诊断入门教学-CSDN博客 Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客 Python轴承故障诊断 (14)高创新故障识别模型-CSDN…

【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器(上)

文章目录 前言一、ArkTS基本介绍1、 ArkTS组成2、组件参数和属性2.1、区分参数和属性的含义2.2、父子组件嵌套 二、装饰器语法1.State2.Prop3.Link4.Watch5.Provide和Consume6.Observed和ObjectLink代码示例:示例1:(不使用Observed和ObjectLi…

新媒体运营

一、新媒体运营的概念 1.新媒体 2.新媒体运营的五大方向 用户运营 产品运营 。。。 二、新媒体的岗位职责及要求 三、新媒体平台

数仓工具:datax

datax可以理解为sqoop的优化版, 速度比sqoop快 因为sqoop底层是map任务,而datax底层是基于内存 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定…

群晖NAS使用Docker本地部署网页版Ubuntu系统并实现无公网IP远程访问

文章目录 前言1. 下载Docker-Webtop镜像2. 运行Docker-Webtop镜像3. 本地访问网页版Linux系统4. 群晖NAS安装Cpolar工具5. 配置异地访问Linux系统6. 异地远程访问Linux系统7. 固定异地访问的公网地址 前言 本文旨在详细介绍如何在群晖NAS部署docker-webtop,并结合c…

性能问题的典型特征有哪些?

各位好,我是 道普云 一站式云测试SaaS平台。一个在软件测试道路上不断折腾十余年的萌新。 欢迎关注我的专栏和我的主页 道普云 文章内容具有一定门槛,建议先赞再收藏慢慢学习,有不懂的问题欢迎私聊我。 (双击屏幕有新大陆&…

土壤墒情测定仪的工作原理

土壤含水量监测仪器,也称为土壤水分测定仪或土壤墒情测定仪,是专门用于测量和监测土壤中含水量的设备。这些仪器在农业、环境科学、地质勘探等领域具有广泛应用,对于指导农业生产、评估土壤质量、研究土壤水分动态等具有重要意义。以下是对土…

2024国家网络安全周 | 海云安凭借AI大模型在软件开发安全领域的创新实践,跻身创新创业投资专场活动决赛圈

近日,2024国家网络安全宣传周-创新创业投资专场活动在广州南沙成功举办,这是首次在国家网络安全宣传周上开展创新创业投资专场活动。本次活动由广东省人民政府指导,广州市人民政府主办,旨在搭建网络安全垂直领域专业、创新投资平台…

[JavaEE]———进程、进程的数据结构、进程的调度

阿华代码,不是逆风,就是我疯,你们的点赞收藏是我前进最大的动力!!希望本文内容能帮到你! 目录 一:操作系统 1:操作系统的定位和功能 2:多任务操作系统 3&#xff1a…

企业常用的8款文件加密软件分享|2024办公文件怎么加密?

随着数字化办公的深入,企业文件安全变得至关重要。企业需要确保敏感数据在传输、存储和共享过程中不会被非法访问或泄露。文件加密是最有效的安全措施之一,通过加密技术,将文件转化为不可读的加密文本,只有授权的用户可以解密查看…

若依VUE项目安全kind-of postcss vite漏洞扫描和修复

npm install unplugin-auto-import0.16.7 npm install vite3.2.11 升级vite、unplugin-auto-import npm install 报错New major version of npm available! 8.5.5 -> 10.8.3,使用命令npm install --force npm install --force

VisionPro - 基础 - 00 模板匹配技术和在VP中的使用 - PMAlign - PatMax - (2)

前言: 针对PatMax 的高级应用和原理,在这一节进行说明: PatMax Patterns When you train PatMax you specify a region of interest in an image or provide a description of a shape that includes the features you want to train. If yo…

Mac电脑技巧:通过 5 种方法从 Mac 上的 SD 卡恢复已删除的文件

SD 卡重量轻且便于携带,是广受欢迎的存储设备。它们通常用于相机、车载录像机、安全门铃等。假设您是一位摄影爱好者,使用 SD 卡来存储您珍贵的回忆:您需要意识到,与易用性相反的是其易碎性,这意味着 SD 卡上的数据可能…

最好的十大儿童护眼灯品牌有哪些?十大护眼大路灯品牌排行榜

最好的十大儿童护眼灯品牌有哪些?作为一名宝爸兼测评博主,对于孩子的视力健康我是极其关注的,可以说经常跟护眼灯打交道。一开始在这方面上我也踩雷不少坑!测评用过这么多护眼大路灯最大的感受就是,有些护眼大路灯完全…

Redis技术解析(基础篇)

1.初识Redis Redis是一种键值型的NoSql数据库,这里有两个关键字: 键值型 Redis-server NoSql 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至jso…

莲藕炖排骨-UMLChina建模知识竞赛第5赛季第15轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 只要最先答对前3题,即可获得本轮优胜。 如果有第4题,第4题为附加题,对错不影响优胜者的判定,影响的是优胜者的得分。 所有题目的回答必…

2024/9/19 英语每日一段

One driver told the Guardian that when the renewal quote for her Saga over-50s car insurance arrived, the cost of the policy had jumped 77% to £2,044 even though “nothing has changed”. Saga said it was experiencing “high levels of claims infl…

【笔记】扩散模型(八):DALL-E 2 (unCLIP) 论文解读与代码实现

论文链接:Hierarchical Text-Conditional Image Generation with CLIP Latents 非官方实现:lucidrains/DALLE2-pytorch DALL-E 2 是一个比较经典的文生图模型,虽然和 Stable Diffusion 的架构有些区别,但是也利用了 CLIP 的文本-图…

2024CCPC网络赛

vp链接&#xff1a;Dashboard - The 2024 CCPC Online Contest - Codeforces B. 军训 II 序列 a 从小到大排列或者从大到小排列时&#xff0c;不整齐度是最小的。方案数是所有相同数字的个数的排列数的乘积。如果首尾的数字不同的话&#xff0c;还要再乘个 2。 #include <…

【在Linux世界中追寻伟大的One Piece】进程间关系与守护进程

目录 1 -> 进程组 1.1 -> 什么是进程组 1.2 -> 组长进程 2 -> 会话 2.1 -> 什么是会话 2.2 -> 如何创建会话 2.3 -> 会话ID(SID) 3 -> 控制终端 4 -> 作业控制 4.1 -> 什么是作业(job)和作业控制(Job Control) 4.2 -> 作业号 4.3…