three.js学习 01-使用最基本的方法创建出来一个threejs立方体,three.js开发环境搭建

news2024/10/6 0:32:48

1.当前实现的最终效果:

我们将会在页面上使用threejs的渲染器创建场景和相机,并且将一个简单几何体结果的canvas嵌入到我们的网页中

最终效果几何体

2.环境以及工具介绍:

three中文官方文档地址:https://www.three3d.cn/docs/index.html
使用的开发工具:vscode
使用的模块打包工具:parcel
开发语言:js,css,json,html
当前案例的开发环境及其配置如下:

{
  "name": "01-testparcel",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "parcel index.html",
    "build": "parcel build index.html"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "three": "^0.151.3"
  },
  "devDependencies": {
    "parcel-bundler": "^1.12.5"
  }
}

eg

3.安装依赖包及项目结构搭建

npm i parcel-bundler --save-dev 我们在这里使用parcel替代webpack作为打包工具
npm i three --save threejs的资源包

安装完成后手动创建如下项目结构
在这里插入图片描述
package.json:

{
  "name": "01-testparcel",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "parcel index.html",
    "build": "parcel build index.html"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "three": "^0.151.3"
  },
  "devDependencies": {
    "parcel-bundler": "^1.12.5"
  }
}

style.css:

* {
    margin: 0;
    padding: 0;
}

body {
    background: skyblue;
}

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./src/accets/css/style.css">
</head>
<body>
    <script src="./src/main/main.js" type="module">

    </script>
</body>
</html>

main.js:

import * as THREE from 'three'
// console.log(THREE);

配置完成后使用 npm run dev 启动你的项目,在网页中看到 .css文件中的蓝背景效果生效则说明配置成功
成功

4.在main.js中使用threejs创建出来一个最基础的渲染案例

import * as THREE from 'three'
// console.log(THREE);

// 基础内容

// 1.创建场景
const scene = new THREE.Scene()
// 2.创建相机
const camera = new THREE.PerspectiveCamera(
    75,
    window.innerWidth / window.innerHeight,
    0.1,
    1000
) //透视相机(角度,宽高比,近端,远端)

camera.position.set(0, 0, 10) //修改相机位置

scene.add(camera) //将相机添加到场景中

// 添加物体
// 创建一个几何体对象
const cubeGeometry = new THREE.BoxGeometry(1, 1, 1)
const cubeMaterial = new THREE.MeshBasicMaterial({
    color: 0xffff00
})
// 根据几何体和材质创建一个物体
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial)
// 将几何体添加到场景中
scene.add(cube)

//初始化渲染器
const renderer = new THREE.WebGLRenderer()

//设置渲染的尺寸大小
renderer.setSize(window.innerWidth, window.innerHeight)
console.log(renderer);

// 将webgl渲染的canves内容添加到body上
document.body.appendChild(renderer.domElement)

// 使用渲染器,通过相机,将场景渲染进来
renderer.render(scene, camera)

创建完成后使用npm run dev 启动项目,在页面中看到如开头演示的最基础的几何体的渲染效果

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

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

相关文章

制作两栏布局的 6+5 种方法:从相当合理到完全错误

一个挑战 假设您需要创建一个两列布局。是的&#xff0c;最简单的那种&#xff1a;左边一列&#xff0c;右边一列&#xff0c;中间有一些空隙。有一个明显的现代解决方案&#xff1a; .columns {display: grid;grid-template-columns: 1fr 1fr;gap: 20px; }完毕&#xff01;当…

Go 语言高质量编程

编写高质量的 Go 代码~ 前言&#xff1a; 本次课程简要介绍了高质量编程的定义和原则&#xff0c;分享了代码格式、注释、命名规范、控制流程、错误和异常处理五方面的常见编码规范&#xff0c;帮助我们在今后的开发过程中写出更加优秀的代码 … 什么是高质量编程&#xff1f…

凌恩生物文献分享|微刊:三代全长16s扩增子——环境多样性研究的明星

在微生物研究领域&#xff0c;PacBio三代全长的时代已经来临&#xff0c;如果你还没用过那就太可惜了&#xff01; 要问三代有什么好&#xff0c;那我可得说道说道。 相比于传统二代Illumina平台测序&#xff0c;PacBio Sequel lle 平台获得的序列更长&#xff0c;信息量更多…

Java Servlet Tomcat(HttpServlet)处理底层机制详解总括

以tomact服务器为例&#xff1a; 热知识&#xff1a;Servlet是java定义的处理动态资源&#xff08;非静态资源&#xff09;的java接口规范&#xff0c;HttpServlet是tomcat实现了servlet接口的类 一.当第一次发送请求时候&#xff1a; 1.查询web.xml中的url-parrtern中配置的…

LNMP及论坛搭建

安装 Nginx 服务 systemctl stop firewalld systemctl disable firewalld setenforce 01.安装依赖包 #nginx的配置及运行需要pcre、zlib等软件包的支持&#xff0c;因此需要安装这些软件的开发包&#xff0c;以便提供相应的库和头文件。 yum -y install pcre-devel zlib-deve…

排序(4)——归并排序

目录 前言 1.归并排序的递归实现 1.1 归并排序概念 1.2 归并排序递归实现 2.归并排序的非递归实现 前言 今天给大家带来比较排序的最后一种&#xff0c;归并排序&#xff0c;这个排序&#xff0c;需要我们对递归&#xff0c;循环控制要有着较强的理解&#xff0c;我相信大…

【iOS的NSNULL nil Nil 】

前言 偶然看到了NSNULL 简单了解他的兄弟nil Nil记录一下。 NSNULL Nil nil 在iOS中&#xff0c;nil、Nil和NSNull都表示“空值”的概念&#xff0c;但它们在使用时有所不同。 nil和Nil都表示空指针&#xff0c;可以用于指针类型的变量、对象类型的变量、和Objective-C对象…

浙江海發進出口股份有限公司官网上线|LTD五金技术行业案例分享

​浙江海發進出口股份有限公司 (以下简称海發)是一家多元化的国际贸易企业。拥有自己的工厂&#xff0c;稳定的资金储备和最好的服务&#xff0c;在商业领域赢得了很高的声誉。地处长江三角洲交通经济中心嘉兴市。 浙江海發進出口股份有限公司 (以下简称海發)是一家多元化的国…

Python轻量级Web框架Flask(5)——Flask模型基础和数据迁移

0、前言&#xff1a;学习这部分的前提是对python的面向对象有一定的了解&#xff0c;同时对MySQL有扎实的学习 1、Flask模型基础知识&#xff1a; Flask模型 ORM &#xff08;注意&#xff1a;在flask中用ORM可以实现SQL语句功能&#xff0c;但是并不意味着SQL语句不重要&am…

NISACTF2023 WP

NISACTF2023 WP 前言 2年多没玩CTF了&#xff0c;pwn显得手生了不少&#xff0c;我的PWN环境已经在硬盘的某个角落里吃灰了。今天参加了一场校赛&#xff0c;捣鼓了一下午&#xff0c;Reverse和PWN都AK了。其实比赛是新手向&#xff0c;没啥难度&#xff0c;不过有道PWN设计的…

ChatGPT实战100例 - (02) 自动出PPT它不香么?

文章目录ChatGPT实战100例 - (02) 自动出PPT它不香么&#xff1f;一、需求与思路1. 需求&#xff1a;出个PPT&#xff0c;5分钟后要用2. 思路&#xff1a;生成markdown然后转化二、生成markdown语法的思维导图1. 问题2. 回答三、把markdown文本转换成PPTChatGPT实战100例 - (02…

STM32 gpio外部中断详解

什么是中断&#xff1f; 打断CPU执行正常的程序&#xff0c;转而处理紧急程序&#xff0c;然后返回原暂停的程序继续运行&#xff0c;就叫中断 中断的作用和意义 中断的意义&#xff1a;高效处理紧急程序&#xff0c;不会一直占用CPU资源 STM32 GPIO外部中断简图 NVIC 什么…

JSTL标签库

英文全称&#xff1a;Java Standard Tag Lib&#xff08;Java标准的标签库&#xff09; 使用目的&#xff1a;JSTL标签库通常结合EL表达式一起使用。目的是让JSP中的java代码消失。 使用位置&#xff1a;JSTL标签是写在JSP当中的&#xff0c;但实际上最终还是要执行对应的jav…

Ubuntu 开机启动 通过crontab定时器去检查脚本 实现

有个项目的程序需要实现开机启动 通过添加一个qmcy.service服务的方法 发现 确实执行脚本了 但是脚本的程序缺并没有起来 但是如果手动执行这个脚本 程序是能起来的 不知道为啥 没办法 网上搜了下 可以通过 crontab定时器去检查 程序是否启动 没启动的话去 执行对应的脚…

【毕业设计】基于程序化生成和音频检测的生态仿真与3D内容生成系统----程序化生成多图层地形贴图的算法设计

(2条消息) 【开发日志】2023.04 ZENO----Image Processing----CompositeCV、Composite2、Composite3_EndlessDaydream的博客-CSDN博客 (2条消息) 【开发日志】2023.04 ZENO----Image Processing----ImageEdit、EditRGB、EditHSV_EndlessDaydream的博客-CSDN博客 (2条消息) 【…

telegraf在iiot领域的基本应用(Modbus,OPC)

熟悉telegraf是因为influxdb缘故&#xff0c;当时telegraf主要是作为granfa监控的agent一环&#xff0c;很多文章有相关的介绍&#xff0c;但作为java开发对telegraf&#xff08;go语言开发&#xff09;也仅仅只是适用级别&#xff0c;这边文章也只讲到一些简单的应用。希望能帮…

<STM32>STM32CubeMX-CAN通信(扫描读取数据方式)(5)

&#xff1c;STM32&#xff1e;STM32CubeMX-CAN通信&#xff08;扫描读取数据方式&#xff09;&#xff08;5&#xff09; 本节主要讲解CAN通信的功能&#xff0c;主要采用扫面检测接收数据的方式&#xff1b; CAN的详细解说可参考《STM32F4XXX中文参考手册》&#xff0c;资料有…

CDH 之 Kerberos 安全认证和 Sentry 权限控制管理(一)

一、Kerberos 和 Sentry 概述 1.1 什么是 Kerberos Kerberos是一种计算机网络授权协议&#xff0c;用来在非安全网络中&#xff0c;对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构&#xff0c;…

java微服务商城高并发秒杀项目--011.授权规则和系统规则

授权规则在shop-order-server中新建RequestOriginParserDefinition.java,定义请求来源如何获取Component public class RequestOriginParserDefinition implements RequestOriginParser {Overridepublic String parseOrigin(HttpServletRequest request) {/*** 定义从请求的什么…

文本分类论文阅读

1.ChineseBERT: Chinese Pretraining Enhanced by Glyph and Pinyin Information&#xff08;ACL2021&#xff09; 字形嵌入根据汉字的不同字体获得&#xff0c;能够从视觉特征中捕捉汉字语义&#xff0c;拼音嵌入表征汉字的发音&#xff0c;解决了汉语中非常普遍的异义异义现…