Three.js-01快速入门

news2025/1/24 10:48:32

1.导入three.js库

说明:资源在主页里面能够找到,如果不想使用本地的three.module.js文件,也可以使用在线的文件。

        import * as THREE from "../three.module.js"

// import * as THREE from 'https://unpkg.com/three/build/three.module.js'

2.创建场景

说明:创建一个3D场景的容器,用于存储和组织所有3D对象、光源、摄像机以及其他必要的元素。

 const scene=new THREE.Scene()

3.创建相机

说明:定义观察3D场景的视野范围和投影方式

 const camera=new THREE.PerspectiveCamera()

4.创建物品

说明:立方体必须要材质,不然显示不出。

4.1立方体

说明:以立方体为例子

const geometry=new THREE.BoxGeometry()

4.2材质

说明:决定了3D模型的外观和表面特性

 const material=new THREE.MeshBasicMaterial({color:0x00ff00})

5.创建网格

说明:渲染成具有真实感的3D模型

 const cube=new THREE.Mesh(geometry,material)
 cube.position.set(0,3,0)
 scene.add(cube)

6.渲染器

说明:3D场景渲染到浏览器的canvas元素上

 const render=new THREE.WebGLRenderer()
// 调整渲染器窗口的大小
render.setSize(window.innerWidth,window.innerHeight)

7.添加到页面

   document.body.appendChild(render.domElement)

8.动画

 function animate(){
  // 它的主要作用是让浏览器在下一次重绘之前调用指定的回调函数,从而实现动画效果
requestAnimationFrame(animate)
cube.rotation.x+=0.01
render.render(scene,camera)
        }
animate()

8.源码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
	<script type="module">
        import * as THREE from "../three.module.js"
        // import * as THREE from 'https://unpkg.com/three/build/three.module.js'
            // 创建场景
            const scene=new THREE.Scene()
            // 创建相机
            const camera=new THREE.PerspectiveCamera()
            // 调整相机的位置
            camera.position.z=10
            camera.position.y=2
            camera.position.x=2
            // 创建一个物品
            // 立方体
            const geometry=new THREE.BoxGeometry()
            // 材质
           const material=new THREE.MeshBasicMaterial({color:0x00ff00})
            //  网格 立方体在网格里面,通过网格控制立方体在场景的位置
           const cube=new THREE.Mesh(geometry,material)
           cube.position.set(0,3,0)
           scene.add(cube)

           //    创建渲染器
           const render=new THREE.WebGLRenderer()
                   // 调整渲染器窗口的大小
            render.setSize(window.innerWidth,window.innerHeight)
          //    页面添加元素
            document.body.appendChild(render.domElement)
            // 添加网格地面
            const GridHelper=new THREE.GridHelper(10,10)
            scene.add(GridHelper)
           //   进行渲染
           render.render(scene,camera)
        //   立方体动起来
        function animate(){
            // 它的主要作用是让浏览器在下一次重绘之前调用指定的回调函数,从而实现动画效果
            requestAnimationFrame(animate)
            cube.rotation.x+=0.01
            render.render(scene,camera)
        }
        animate()
    </script>

</body>
</html>

9.展示

 

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

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

相关文章

jmap -heap pid 报错了

1.jmap工具所在的jdk版本和要查看的代码的版本不一致 2.jdk1.8支持jmap -heap 而jdk 11以上不支持这个命令 可以jmap -h查看

【架构笔记1】剃刀思维-如无必要,勿增实体

欢迎来到文思源想的架构空间&#xff0c;前段时间博主做了一个工作经历复盘&#xff0c;10年开发路&#xff0c;走了不少弯路&#xff0c;也算积累了不少软件开发、架构设计的经验和心得&#xff0c;确实有必要好好盘一盘&#xff0c;作为个人的总结&#xff0c;同时也留给有缘…

2024.2.29 模拟实现 RabbitMQ —— 项目展示

目录 项目介绍 核心功能 核心技术 演示直接交换机 演示扇出交换机 演示主题交换机 项目介绍 此处我们模拟 RabbitMQ 实现了一个消息队列服务器 核心功能 提供了 虚拟主机、交换机、队列、绑定、消息 概念的管理九大核心 API 创建队列、销毁队列、创建交换机、销毁交换机、…

【Go的函数】

函数 函数的引入函数细节祥讲包的引入包的细节详讲init函数匿名函数闭包defer关键字系统函数字符串相关函数日期和时间相关函数内置函数 函数的引入 【1】为什么要使用函数&#xff1a; 提高代码的复用&#xff0c;减少代码的冗余&#xff0c;代码的维护性也提高了 【2】函数…

如何多环境切换?如何在微服务配置多环境?

问题本质: nacos配置中心的配置是如何被项目读取到的&#xff1f;(nacos的配置中心和项目是如何联系的&#xff1f;) 注意&#xff1a;nacos有配置管理和服务管理&#xff0c;别弄混。自动注册的是服务管理&#xff01;&#xff01;&#xff01; 1. 如何注册到nacos服务管理中心…

《YOLOv9:从入门到实战》报错解决 专栏答疑

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。《YOLOv9&#xff1a;从入门到实战》专栏上线后&#xff0c;部分同学在学习过程中提出了一些问题&#xff0c;笔者相信这些问题其他同学也有可能遇到。为了让大家可以更好地学习本专栏内容&#xff0c;笔者特意推出了该篇专…

阿里云服务器多少钱?免费的不要钱!

注册阿里云账号&#xff0c;免费领云服务器&#xff0c;最高领取4台云服务器&#xff0c;每月750小时&#xff0c;3个月免费试用时长&#xff0c;可快速搭建网站/小程序&#xff0c;部署开发环境&#xff0c;开发多种企业应用。阿里云服务器网aliyunfuwuqi.com分享阿里云服务器…

【wu-acw-client 使用】案例

wu-acw-client 使用 项目介绍&#xff0c;使用acw-client&#xff0c;创建对应Java项目的增删改查&#xff08;ORM&#xff1a;Lazy ORM、mybatis&#xff09;&#xff0c;项目模块架构&#xff1a;mvc、feign、ddd 演示项目环境&#xff1a;idea 、mac、mysql、jdk17 spring …

【C++进阶】深入了解继承机制

目录 前言 1. 继承的概念 2. 继承的定义 3. 继承中基类与派生类的赋值转换 4. 继承中的作用域 5. 派生类的默认成员函数 6. 继承与友元、静态成员 7. 多继承与菱形继承 7.1 如何解决 前言 继承是面向对象编程中的一个重要概念&#xff0c;也是面向对象编程语言中普遍存在的特…

Python爬虫中的单线程、多线程问题(文末送书)

前言 在使用爬虫爬取数据的时候&#xff0c;当需要爬取的数据量比较大&#xff0c;且急需很快获取到数据的时候&#xff0c;可以考虑将单线程的爬虫写成多线程的爬虫。下面来学习一些它的基础知识和代码编写方法。 一、进程和线程 进程可以理解为是正在运行的程序的实例。进…

实验室储样瓶耐强酸强碱PFA材质试剂瓶适用新材料半导体

PFA&#xff0c;全名可溶性聚四氟乙烯&#xff0c;试剂瓶又叫取样瓶、样品瓶、广口瓶、储样瓶等。主要用于痕量分析、同位素分析等实验室&#xff0c;广泛应用于新兴的半导体、新材料、多晶硅、硅材、微电子等行业。 规格参考&#xff1a;30ml、60ml、100ml、125ml、250ml、30…

QT项目打包

十、项目打包 设置图标 以下是个项目设置图标的 操作步骤 设计或下载一个图标图片&#xff08;推荐分辨率6464及其以上&#xff0c;256256及其以下&#xff09;。转换为.ico格式&#xff0c;转换可以使用下面的网站。 Convertio — 文件转换器 PNG转ICO, 在线转换器 - 转换视频…

国家开放大学 新学期 电大搜题助力学子们取得理想成绩

尊敬的读者朋友们&#xff0c;您是否曾经遇到过在学习中遇到困难&#xff0c;却找不到合适的学习资源和答案的尴尬处境&#xff1f;您是否经历过为了解决学习难题四处奔波而导致时间和精力的浪费&#xff1f;如果您曾经面临这样的困扰&#xff0c;那么您一定不能错过今天为您推…

三、系统知识笔记-计算机系统基础知识

一、计算机系统概述 计算机系统是指用于数据管理的计算机硬件、软件及网络组成的系统。 它是按人的要求接收和存储信息&#xff0c;自动进行数据处理和计算&#xff0c;并输出结果信息的机器系统。 冯诺依曼体系计算机结构&#xff1a; 1.1计算机硬件组成 冯诺依曼计算机结…

中间件-Nginx漏洞整改(限制IP访问隐藏nginx版本信息)

中间件-Nginx漏洞整改&#xff08;限制IP访问&隐藏nginx版本信息&#xff09; 一、限制IP访问1.1 配置Nginx的ACL1.2 重载Nginx配置1.3 验证结果 二、隐藏nginx版本信息2.1 打开Nginx配置文件2.2 隐藏Nginx版本信息2.3 保存并重新加载Nginx配置2.4 验证结果2.5 验证隐藏版本…

LeetCode刷题---查询结果的质量和占比

思路&#xff1a; 首先按照query_name进行分组操作 对组内的rating/position的值求平均值得到quality 对组内的rating的值使用IF函数进行判断&#xff0c;如果rating<3则将其标识为1&#xff0c;如果rating>3,则将其标识为0&#xff0c;通过次方法可以找出组内rating的值…

MNIST数据集下载(自动下载)

&#x1f4da;**MNIST数据集下载(自动下载)**&#x1f4da; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您的…

微信小程序的医院体检预约管理系统springboot+uniapp+python

本系统设计的目的是建立一个简化信息管理工作、便于操作的体检导引平台。共有以下四个模块&#xff1a; uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 语言&#xff1a;pythonjavanode.js…

【UE 材质】冰冻效果

效果 步骤 1. 打开“Quixel Bridge” 下载冰的纹理 2. 新建一个材质&#xff0c;这里命名为“M_Frozen” 打开“M_Frozen”&#xff0c;添加如下节点&#xff0c;此时我们可以通过控制参数“偏移”来改变边界的偏移 此时预览效果如下 如果增加参数“偏移”的默认值效果如下 3.…

在 Android 运行 GNU/Linux 二进制程序 (proot)

在 GNU/Linux 系统上运行 Android 应用比较容易 (比如 waydroid), 但是反过来就很麻烦了. Android 虽然也使用 Linux 内核 (kernel), 但是系统环境和一般的 GNU/Linux 系统 (比如 ArchLinux, Debian, Ubuntu, Fedora, NixOS 等) 具有不可忽略的显著差异, 所以为 GNU/Linux 编译…