Three.js基础练习——渲染一个立方体

 1.学习内容参考了

three.js入门教程--零基础也能学会_threejs菜鸟教程-CSDN博客

本章内容包含渲染立方体,并配合ui工具食用~

2.效果图 

import * as THREE from 'three'
import * as dat from 'dat.gui'
import { OrbitControls } from 'three/addons/controls/OrbitControls.js'
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'
// const controls = new OrbitControls(camera, renderer.domElement)
// const loader = new GLTFLoader()
// 创建一个场景
const scene = new THREE.Scene()
const cubeGeometry = new THREE.BoxGeometry(1, 1, 1)
const cubMaterial = new THREE.MeshNormalMaterial()
const cube = new THREE.Mesh(cubeGeometry, cubMaterial)
scene.add(cube)
// 创建一个相机
const camera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight,1,500
)
camera.position.z = 5
// 创建一个渲染器
const renderer = new THREE.WebGLRenderer()
// 设置渲染器大小 为页面宽高 或一半
renderer.setSize(window.innerWidth, window.innerHeight)
renderer.setPixelRatio(window.devicePixelRatio)
document.body.appendChild(renderer.domElement)
renderer.render(scene, camera)
//初始化集成GUI
const gui = new dat.GUI()
// 第一个参数 对象
// 第二个参数 对象属性
// 第三个参数 步长范围
const guiPosition = gui.addFolder('位置信息')
guiPosition.add(cube.position, 'x', -10, 10, 1)
guiPosition.add(cube.position, 'y', -10, 10, 1)
guiPosition.add(cube.position, 'z', -10, 10, 1)const guiScale = gui.addFolder('缩放')
guiScale.add(cube.scale, 'x', 1, 10, 1)
guiScale.add(cube.scale, 'y', 1, 10, 1)
guiScale.add(cube.scale, 'z', 1, 10, 1)
// 创建轨道控制器
const controls =new OrbitControls(camera,renderer.domElement)
function animation() {// cube.rotation.x += 0.01cube.rotation.y += 0.01cube.rotation.z += 0.01renderer.render(scene, camera)requestAnimationFrame(animation)
}
animation()
document.body.appendChild(renderer.domElement)
// 4.创建坐标辅助器
const axesHelper = new THREE.AxesHelper(10)
scene.add(axesHelper)
// 5.创建自适应画布
window.addEventListener('resize', () => {// 重新设置相机宽高比camera.aspect = window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()// 设置渲染器出图 照片大小renderer.setSize(window.innerWidth,window.innerHeight)
})
// 6.创建网格辅助对象
const gridHelper = new THREE.GridHelper(20, 20, 0xffffff, 0xffffff)
gridHelper.material.transparent = true
gridHelper.material.opacity = 0.5
scene.add(gridHelper)
// 7.对正方体进行基础设置
// 设置移动位置
cube.position.x = 10
cube.position.y = 10
cube.position.z = 10
// 大小 x y z放大倍数
cube.scale.set(2, 2, 3)

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

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

相关文章

在Tiled中制作动画瓦片图

什么是瓦片图?瓦片图是指用图块把游戏场景评出来 工具安装链接:Tiled | Flexible level editor 资源下载教程 资源下载:Mystic Woods - 16x16 Pixel Art Asset Pack by Game Endeavor 解压后得到一些资源 新建图块集合 Tiled的安装就不介绍…

H3C DHCP快速配置指南

1 配置DHCP服务器动态分配IPv4地址 1.1 简介 本案例介绍配置接口工作在DHCP服务器模式,实现动态分配IPv4地址的方法。 1.2 组网需求 如1.2 图1所示,公司将交换机做为核心交换机,现在需要在核心交换机上划分3个VLAN网段,Ho…

从零开始写 Docker(十四)---重构:实现容器间 rootfs 隔离

本文为从零开始写 Docker 系列第十四篇,实现容器间的 rootfs 隔离,使得多个容器间互不影响。 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识: 核心原理:…

FTA、ETA和FMA相互融合——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 在实际工作中,故障树分析(FTA)、事件树分析(ETA)和故障模式、影响及危害性分析(FMECA)是相互补充、相互关联的分析工具,它们在保障系统安全性和可…

Docker常用镜像安装

1. mysql 1.1 安装 获取镜像 docker pull mysql:8.0.30创建文件挂载目录 创建容器并运行 docker run -p 3306:3306 --name mysql8 \ -v /home/docker/mysql8/log:/var/log/mysql \ -v /home/docker/mysql8/data:/var/lib/mysql \ -v /home/docker/mysql8/mysql-files:/va…

三国杀背后的图形化编程 变量跟踪与吐槽的故事

在周末的公司里,卧龙凤雏等几位员工终于结束了加班任务,他们每个人都显现出些许疲惫之态,但心情还算较为轻松愉悦。突然,有人提议玩上几局三国杀,以此来让大家放松一下身心。于是乎,几人纷纷掏出手机&#…

QML配合VTK基本实现

采用 QT5.15 VTK9.2.0 建立QT QUICK项目 部分方法来源于 QML加载VTK main.cpp #include <QGuiApplication> #include <QQmlApplicationEngine>#include <QQuickVTKRenderWindow.h> #include <QQuickVTKRenderItem.h> #include <vtkPolyDataMapp…

geotrust dv通配符证书800

Geotrust是成立时间较久的正规CA认证机构&#xff0c;在过去的几十年间颁发了无数的SSL证书&#xff0c;这些SSL证书被各个开发者使用&#xff0c;受到大多数浏览器的信任。而Geotrust旗下的DV通配符证书因其广泛的应用范围受到了用户的青睐。今天就随SSL盾小编了解Geotrust旗下…

R2S+ZeroTier+Trilium

软路由使用ZeroTier搭建远程笔记 软路由使用ZeroTier搭建远程笔记 环境部署 安装ZeroTier安装trilium 环境 软路由硬件&#xff1a;友善 Nanopo R2S软路由系统&#xff1a;OpenWrt&#xff0c;使用第三方固件nanopi-openwrt。内网穿透&#xff1a;ZeroTier。远程笔记&…

人脸识别技术在访客管理中的应用

访客办理体系&#xff0c;能够使用于政府、戎行、企业、医院、写字楼等众多场所。在办理时&#xff0c;需求对来访人员身份进行精确认证&#xff0c;才能保证来访人员的进入对被访单位不被外来风险入侵。在核实身份时&#xff0c;比较好的方法就是选用人脸辨认技能&#xff0c;…

苹果电脑怎么清内存?2024有哪些好用的工具?

在使用苹果电脑的过程中&#xff0c;我们可能会遇到系统运行缓慢、程序响应迟缓或频繁出现应用程序崩溃的情况&#xff0c;这些问题很可能是由于内存占用过高所导致。内存&#xff0c;或称为RAM&#xff08;RandomAccessMemory&#xff09;&#xff0c;是计算机的临时存储区&am…

【Redis】用户登录校验

对于用 redis 对用户进行登录校验&#xff0c;大致可分为以下六步&#xff1a; 首先通过查询数据库来查找具有提供的用户名、密码和delFlag值为0的用户。如果未找到用户&#xff0c;则抛出一个带有消息"用户不存在"的ClientException&#xff08;用户不存在&#xf…

【计算机网络】计算机网络概述、计算机网络性能指标 习题1

0 1. 计算机网络可被理解为( )。 A.执行计算机数据处理的软件模块 B. 由自治的计算机互连起来的集合体 C.多个处理器通过共享内存实现的紧耦合系统 D. 用于共同完成一项任务的分布式系统 0 2.计算机网络最基本的功能是( )。 A.数据通信 B. 资源共享 C. 分布式处理 D. 信息综合…

06_图(Graph)

图的定义 图&#xff08;Graph&#xff09;是由顶点的有穷非空集合和顶点之间的集合组成&#xff0c;通常表示为&#xff1a;G(V,E)&#xff0c;其中&#xff0c;G表示一个图&#xff0c;V是图G中顶点集合&#xff0c;E是图G中边的集合。 对于图的定义&#xff0c;需要注意的地…

国产操作系统上安装软件包及环境管理系统Conda _ 统信 _ 麒麟

原文链接&#xff1a;国产操作系统上安装软件包及环境管理系统Conda | 统信 | 麒麟 Hello&#xff0c;大家好啊&#xff01;今天我们将讨论如何在国产操作系统上安装Conda。Conda是一款开源的软件包管理和环境管理系统&#xff0c;可以轻松管理多个数据科学和机器学习环境&…

鸿蒙应用开发DevEco Studio工程目录模块介绍

面向开发者&#xff0c;HarmonyOS 推出了 DevEco Studio 和 Dev Device Tool 两款开发工具&#xff0c;前者目前迭代至 3.1 版本&#xff08;对外开放版本&#xff09;&#xff0c;用于开发 HarmonyOS 应用&#xff1b;后者用于开发智能设备 应用的工程主体结构如上图 在这里我…

05.线程

进程有哪些缺陷&#xff1f; 1.创建的代价较高 进程是OS进行资源分配的基本单位&#xff0c;也就是说创建进程是需要分配资源的&#xff0c;所以创建代价很高 2.通信不方便 进程之间要想进行通信必须借助第三方资源&#xff08;管道、内存映射、消息队列&#xff09; 线程的优…

Java开发工具Idea的下载与激活

一&#xff0c;官网下载Idea 建议从官网下载&#xff0c;安全、可靠。 1&#xff0c;点击此处进入官网下载 2&#xff0c;进入官网之后点击[Support]&#xff0c;点击浮窗左侧[Download and Install] 3&#xff0c;跳入如下新界面&#xff0c;点击Download进入下载界面 4&am…

汇昌联信数字:拼多多如何开个人店铺?有哪些教程?

在互联网经济飞速发展的当下&#xff0c;电子商务平台如雨后春笋般涌现&#xff0c;其中拼多多以其独特的社交电商模式迅速崛起&#xff0c;吸引了大批商家和个人卖家入驻。如果你正考虑在拼多多开设个人店铺&#xff0c;那么了解开店流程和相关教程就显得尤为重要。以下是关于…

水面垃圾监测识别摄像机

随着城市化进程的加快和旅游业的兴起&#xff0c;水域环境污染问题日益突出&#xff0c;水面垃圾成为环境保护的重要问题。为有效监测和清理水面垃圾&#xff0c;水面垃圾监测识别摄像机应运而生。水面垃圾监测识别摄像机利用高清晰度摄像头和智能识别算法&#xff0c;能够实时…