当前位置: 首页 > news >正文

章节一、认识three.js与开发环境学习笔记01;

一、如何学习WEB可视化3D技术与课程内容演示;

1、项目案例:

       政府有大量的新基建的项目:如数字孪生、智慧城市、智慧园区、智慧工厂、智慧消防等等都涉及了3d的可视化技术;

2、如何系统的学号WEB 3D可视化技术?

       three.js是一个让用户通过javascript入手进入搭建webgl项目的类库;

       学习webgl需要图形学的知识,而webgl需要通过学习 js 和 glsl 两种语言;

        直接使用webgl需要的话,那么势必是从底层写起来,那这个时候必须全面的去了解 着色器 的语法,那么自己需要去编写 顶点着色器 和 片元着色器;

 3、如何开始学习three.js?

        需要掌握:threejs里面的基本概念:点、线、面、几何体;
        需要掌握:材质物体、场景、相机、渲染器、动画、控制器;

        需要了解:pbr(pbr是基于物理的光照原理的渲染)、环境贴图、凹凸贴图、置换贴图、放射光、环境贴图、金属贴图、粗糙度贴图;
        如何通过这些方式把光照的效果:类如石子的凹凸、门面的凹凸、仅仅通过一个平面也能够显示出凹凸不平的效果 以及 折射不同角度的光照效果;

        如何打造粒子?我们要绘制雨雪、落叶、星河;

        如何让我们的网页 跟我们的物体进行一个互动?如何选中场景中的物体进行交互?如何能够掌握物理引擎让物体有真实的物理效果?例如像:重力、反弹、摩擦力等物体这个相互作用,让它更加的真实?

4、如何系统学习WEBGL?

        进入webgl的魔力世界:掌握着色技术的语言控制,用gpu的方式来进行渲染;掌握threejs怎么用底层去封装webgl;
        如何通过着色器编写顶点着色器?如何通过着色器编写片元着色器?
        了解整个图像渲染的原理,去绘制比如 动态飘扬的旗帜、衣服、烟雾、乌云、波涛汹涌的大海、水纹等...
        掌握了着色器,我们就可以写出各种酷炫的效果:像节日的烟花。
        继续深入可以让整个场景进行后期的加工,例如说:可以打造出像生化危机里面闪烁的怪异的画面、一个带雪花的陈旧感的画面、编写着色器打造出水底观看的效果;

二、新增打造开放世界课程项目预览;

三、本地搭建three.js的官方网站;

1、Github下载three.js的代码;

       官网:github.com:mrdoob/three.js.git

       下载压缩包文件:Download ZIP

        解压文件后:npm install 

        启动项目:npm run dev

四、使用parcel搭建three.js的开发环境;

1、为什么使用parcel?

      代码自动补全;

       写完代码在浏览器中可以直接看到效果;

       极速配置、快速上手开发;

2、如何搭建parcel的开发环境?

       网址:parceljs.cn

// 01.项目初始化
npm init// 02.安装bunder
npm install parcel-bundler// 03.配置命令
{"scripts" : {// 打包哪个文件"dev" : "parcel src/index.html",// 项目构建"build" : "parcel build src/index.html"}
}// 04.设置开发环境的依赖
npm install parcel-bundler --save-dev

3、安装Three.js的依赖

// 安装threejs的环境包依赖
npm install three --save

五、使用three.js渲染第一个场景和物体;

import * as THREE from 'three';console.log(THREE)// 目标:了解three.js最基本的内容// 一、创建场景
const scene = new THREE.Scene();// 二、创建相机(透视相机)
/*** fov    摄像机是椎体垂直视野角度* aspect 摄像机视椎体宽高比* near   摄像机视椎体近端面* far    摄像机视椎体远端面*/
const camera = new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000
);// 2.1.设置相机位置
camera.position.set(0,0,10);// 2.2.场景中添加相机
scene.add(camera);// 三、场景中添加物体
// 3.1.创建几何体对象
const cubeGeometry = new THREE.BoxGeometry(1,1,1);// 3.2.设置几何体的材质
const cubeMaterial = new THREE.MeshBasicMaterial({color : 0xffff000})// 3.3.根据几何体的材质创建物体
const cube = new THREE.Mesh(cubeGeometry , cubeMaterial);// 3.4.将几何体添加到场景当中
scene.add(cube);// 四、初始化渲染器
// 4.1.初始化渲染器
const renderer = new THREE.WebGLRenderer();// 4.2.设置渲染的尺寸和大小,和屏幕的尺寸大小一致
renderer.setSize(window.innerWidth, window.innerHeight);console.log(renderer);// 五、将webgl渲染的canvas内容添加至body
document.body.appendChild(renderer.domElement);// 六、使用渲染器通过相机将场景渲染进来
renderer.render(scene,camera);

六、如何处理运行搭建开发Three环境出现的问题;

七、结合vue开发three.js;

1、用vue搭建THREE的开发环境;

// 01.全局安装VUE-CLI环境
npm install -g @vue/cli// 02.创建vue项目,选择vue3版本
vue create threeapp?  Your connection to the default yarn registry seems to be slow.Use https://registry.npmmirror.com for faster installation? YesVue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel
? Choose a version of Vue.js that you want to start the project with 3.x
? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
? Save this as a preset for future projects? No
? Pick the package manager to use when installing dependencies: Yarn// 03.安装THREE的依赖
cd /threeapp
yarn add three// 04.启动环境
yarn serve

2、修改App.vue的文件;

<template><div></div>
</template><script setup>import * as THREE from 'three';console.log(THREE)// 目标:了解three.js最基本的内容// 一、创建场景const scene = new THREE.Scene();// 二、创建相机(透视相机)/*** fov    摄像机是椎体垂直视野角度* aspect 摄像机视椎体宽高比* near   摄像机视椎体近端面* far    摄像机视椎体远端面*/const camera = new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000);// 2.1.设置相机位置camera.position.set(0,0,10);// 2.2.场景中添加相机scene.add(camera);// 三、场景中添加物体// 3.1.创建几何体对象const cubeGeometry = new THREE.BoxGeometry(1,1,1);// 3.2.设置几何体的材质const cubeMaterial = new THREE.MeshBasicMaterial({color : 0xffff000})// 3.3.根据几何体的材质创建物体const cube = new THREE.Mesh(cubeGeometry , cubeMaterial);// 3.4.将几何体添加到场景当中scene.add(cube);// 四、初始化渲染器// 4.1.初始化渲染器const renderer = new THREE.WebGLRenderer();// 4.2.设置渲染的尺寸和大小,和屏幕的尺寸大小一致renderer.setSize(window.innerWidth, window.innerHeight);console.log(renderer);// 五、将webgl渲染的canvas内容添加至bodydocument.body.appendChild(renderer.domElement);// 六、使用渲染器通过相机将场景渲染进来renderer.render(scene,camera);</script><style>
* {margin: 0;padding: 0;box-sizing: border-box;
}
canvas {width: 100vw;height: 100vh;postion: fixed;left:0;top:0;
}</style>

注:本文为THREEJS的学习笔记,不涉及商业盈利,如原作者认为有涉及原课程的侵权行为,请联系我删文处理!!! 

相关文章:

章节一、认识three.js与开发环境学习笔记01;

一、如何学习WEB可视化3D技术与课程内容演示&#xff1b; 1、项目案例&#xff1a; 政府有大量的新基建的项目&#xff1a;如数字孪生、智慧城市、智慧园区、智慧工厂、智慧消防等等都涉及了3d的可视化技术&#xff1b; 2、如何系统的学号WEB 3D可视化技术&#xff1f; three…...

QT摄像头采集

主界面为显示框&#xff0c;两个下拉框&#xff0c;一个是所有相机&#xff0c;一个是相机支持的分辨率 系统根据UI界面自动生成的部分不再描述&#xff0c;以下为其他部分源码 widget.h #include <QWidget> #include <QMouseEvent> class QCamera; class QCamer…...

C语言第三十四弹---动态内存管理(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 动态内存管理 1、动态内存经典笔试题分析 1.1、题目1 1.2、题目2 1.3、题目3 1.4、题目4 2、柔性数组 2.1、柔性数组的特点 2.2、柔性数组的使用 2.3、…...

PDN分析及应用系列二-简单5V电源分配-Altium Designer仿真分析-AD

PDN分析及应用系列二 —— 案例1:简单5V电源分配 预模拟DC网络识别 当最初为PCB设计打开PDN分析仪时,它将尝试根据公共电源网络命名法从设计中识别所有直流电源网络。 正确的DC网络识别对于获得最准确的模拟结果非常重要。 在示例项目中已经识别出主DC网络以简化该过程。 …...

Vue开发实例(一)Vue环境搭建第一个项目

Vue环境搭建&第一个项目 一、环境搭建二、安装Vue脚手架三、创建Vue项目 一、环境搭建 下载方式从官网下载&#xff1a;http://nodejs.cn/download/ 建议下载v12.16.0版本以上的&#xff0c;因为版本低无法创建Vue的脚手架 检验是否安装成功 配置环境变量 新增NODE_HOME&…...

将SpringBoot项目改造成solon项目

solon项目介绍 官网 Java “生态型”应用开发框架&#xff1a;更快、更小、更简单。 启动快 5 &#xff5e; 10 倍&#xff1b;并发高 2&#xff5e; 3 倍&#xff1b; 内存省 1/3 ~ 1/2&#xff1b;打包缩到 1/2 ~ 1/10&#xff1b;同时支持 java8, java11, java17, java21&a…...

更详细的软件测试理论基础:流程,开发、测试模型,测试分类,测试用例及其设计方法,缺陷

文章目录 一、测试流程二、开发模型1、 瀑布模型2、增量模型3、快速模型4、其他 三、测试模型1、V模型2、W模型 四、测试分类五、测试用例 test case六、测试用例设计方法1、等价类划分法2、边界值分析法3、因果图法4、判定表法5、正交法6、场景法7、流程分析法8、错误推测法方…...

input css padding

这样控件会跑出外套控件在HTML JSP里面是经常出现的。但有些外国adobe的as控件不存在这种情况&#xff0c;这是因为内层控件定义的时候不能超出外层控件的范围。 修改下&#xff1a;去掉原来css padding&#xff0c;然后加上宽度和高度...

如何打印 springboot 框架中 接收请求的日志

在 Spring Boot 框架中&#xff0c;您可以使用日志来记录接收请求和发送响应的详细信息。Spring Boot 默认使用 SLF4J&#xff08;Simple Logging Facade for Java&#xff09;作为日志抽象层&#xff0c;并支持多种日志实现&#xff0c;如 Logback、Log4j2 等。以下是一种常见…...

JVM的内存区域划分

JVM即Java虚拟机&#xff0c;是Java实现跨平台交互能力的核心&#xff0c;Java编译后的.class文件&#xff0c;就是通过虚拟机和操作系统进行交互的&#xff1b; 常见的虚拟机有&#xff1a;JVM、VMwave、Virtual Box&#xff0c;目前最主流使用的JVM是HotSpot VM&#xff1b;…...

YOLOv9有效改进|使用动态蛇形卷积Dynamic Snake Convolution

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、改进点介绍 使用ICCV2023中的动态蛇形卷积替换YOLOv9网络中的Conv模块。 二、Dynamic Snake Convolution模块详解 2.1 模块简介 应用场景&#x…...

设计模式学习笔记 - 设计原则 - 1.单一职责原则

前言 前面我们提到过 SOLID 原则&#xff0c;实际上 SOLID 由 5 个设计原则组成&#xff0c;分别是&#xff1a;单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖反转原则。它们分别对应 SLOID 中的 S、O、L、I、D 这 5 个英文字母。 今天来学习下 SOLID 原则中的第…...

飞天使-学以致用-devops知识点4-SpringBoot项目CICD实现(实验失败,了解大概流程)

文章目录 代码准备创建jenkins 任务测试推送使用项目里面的jenkinsfile 进行升级操作 文字版本流程项目构建 代码准备 推送代码到gitlab 代码去叩叮狼教育找 k8s 创建jenkins 任务 创建一个k8s-cicd-demo 流水线任务 将jenkins 里面构建时候的地址还有token&#xff0c; 给到…...

使用HTML5画布(Canvas)模拟图层(Layers)效果

使用HTML5画布&#xff08;Canvas&#xff09;模拟图层&#xff08;Layers&#xff09;效果 在图形处理和计算机图形学中&#xff0c;图层&#xff08;Layers&#xff09;是指将图像分成不同的可独立编辑、组合和控制的部分的技术或概念。每个图层都可以包含不同的图形元素、效…...

违背祖训,微软骚操作强制用户更新至 Win 11 23H2

话说&#xff0c;大伙儿有让 Windows 操作系统一直保持最新版习惯吗&#xff1f; 根据以往惯例&#xff0c;Windows 系统更新是个比较玄学的存在&#xff0c;谁也不能保证随手更新后会不会出现什么奇葩 Bug。 因此对于不少同学来说&#xff0c;Windows 更新到一个稳定版本后&a…...

MISRA C++ 2023指南:您需要了解的一切

MISRA C 2023可以帮助使用现代C语言的组织开发安全关键型软件。使用新的MISRA标准&#xff0c;开发人员可以通过确保和记录其软件应用程序的MISRA合规性&#xff0c;满足IEC 6108或ISO 26262等功能安全标准给出的静态分析要求。 什么是MISRA C2023? 以便使用C17进行安全可靠…...

Vue:【亲测可用】父组件数组包对象,传给子组件对象,子组件修改属性(字段)后,父组件没有更新

场景&#xff1a;vue中父组件数组包对象&#xff0c;传给子组件对象&#xff0c;子组件修改属性&#xff08;字段&#xff09;后&#xff0c;父组件没有更新 代码&#xff1a; # 父组件 <div v-for"(object, name, index) in arr" :key"index"><…...

hbase学习十:客户端实现与Meta表解析

1、客户端实现 hbase社区的客户端一般是java客户端。 HBase也支持Shell交互式客户端。Shell客户端实质是用JRuby(用Java编写的Ruby解释器,方便Ruby脚本跑在JVM虚拟机上)脚本调用官方HBase客户端来实现的。因此,各种客户端的核心实现都在社区Java版本客户端上。 客户端访…...

《OpenScene: 3D Scene Understanding with Open Vocabularies》阅读笔记1

传统的3D场景理解方法依赖于带标签的3D数据集,用于训练一个模型以进行单一任务的监督学习。我们提出了OpenScene,一种替代方法,其中模型在CLIP特征空间中预测与文本和图像像素共同嵌入的3D场景点的密集特征。这种零样本方法实现了与任务无关的训练和开放词汇查询。例如,为了…...

数据结构 - Trie树(字符串统计、最大异或对)

文章目录 前言Part 1&#xff1a;Trie字符串统计1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 Part 2&#xff1a;最大异或对1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 前言 本篇博客将介绍Trie树的常见应用&#xff0c;包括&#xff1a;Trie…...

【Spring Boot 4.0 Agent-Ready 架构权威白皮书】:20年资深架构师亲授企业级落地避坑指南

第一章&#xff1a;Spring Boot 4.0 Agent-Ready 架构全景认知Spring Boot 4.0 正式引入 Agent-Ready 架构范式&#xff0c;标志着其从“开发友好”迈向“运行时可观测、可干预、可演进”的新阶段。该架构并非简单叠加 Java Agent 支持&#xff0c;而是将字节码增强、生命周期钩…...

Windows Defender Remover终极指南:彻底释放系统性能的3种方法

Windows Defender Remover终极指南&#xff1a;彻底释放系统性能的3种方法 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mir…...

进程通信与网络协议

一、进程间通信1、管道&#xff1a;管道是基于文件描述符的半双工的通信方式&#xff0c;数据单向流动&#xff0c;数据读取后会从管道中删除。A. 无名管道 ​ i. 仅存在于内核空间中&#xff0c;无文件系统入口 ​ i. 仅支持亲缘间进程通信 ​ i. 进程退出后管道会自动释放 ​…...

TechWiz OLED应用:OLED中偏振光源的分析

1. 建模任务 1.1. 模拟条件  光源: EML Emitter (Unit source)  偶极子方向: Polarization  ExEy1/Phase-90˚, 90˚ (circular polarization)  波长: 380~780 nm (10 nm step)  视角: Theta: 0˚~90˚(10˚ step)/ Phi: 0˚~360˚(10˚ step) 1.2 堆栈结构 2.…...

嵌入式真有效值计算库:Irms_calc高精度电流测量方案

1. Irms_calc库概述&#xff1a;面向嵌入式平台的高精度交流电流有效值计算引擎Irms_calc是一个专为ESP8266、ESP32及Arduino兼容平台设计的轻量级、高鲁棒性交流电流有效值&#xff08;Irms&#xff09;计算库。其核心目标并非简单地对ADC采样值做数学平均&#xff0c;而是构建…...

[具身智能-320]:语料库就是“语言材料的仓库”。

简单来说&#xff0c;语料库就是“语言材料的仓库”。在人工智能和语言学领域&#xff0c;它指的是经过科学取样、加工和整理的大规模电子文本或数据集合。如果把大语言模型&#xff08;LLM&#xff09;比作一个正在上学的孩子&#xff0c;那么语料库就是它读的“书”、做的“题…...

实现ITPS与OTPS双突破!昆仑芯马阳:文心一言背后的国产算力“压榨”实战

大模型靠盲目价格战和粗放燃烧算力的时代已经结束&#xff0c;真正的出路不再是“更便宜的 Token”&#xff0c;而是“更精细的工程架构”。市场正在倒逼工程进步&#xff0c;迫使技术开发者从算力的“消耗者”转变为算力的“压榨者”。责编 | 梦依丹出品 | CSDN&#xff08;ID…...

OpenClaw错误处理机制:千问3.5-35B-A3B-FP8任务失败排查

OpenClaw错误处理机制&#xff1a;千问3.5-35B-A3B-FP8任务失败排查 1. 为什么需要关注错误处理机制 上周我在本地部署了千问3.5-35B-A3B-FP8模型&#xff0c;准备用OpenClaw实现一个自动化内容处理流程。本以为配置好模型地址就能顺利运行&#xff0c;结果第一个任务就卡在了…...

Python 批量导出数据库数据至 Excel 文件每

简介 langchain专门用于构建LLM大语言模型&#xff0c;其中提供了大量的prompt模板&#xff0c;和组件&#xff0c;通过chain(链)的方式将流程连接起来&#xff0c;操作简单&#xff0c;开发便捷。 环境配置 安装langchain框架 pip install langchain langchain-community 其中…...

多租户下的ERP系统的仓储管理模块分析设计轿

springboot自动配置 自动配置了大量组件&#xff0c;配置信息可以在application.properties文件中修改。 当添加了特定的Starter POM后&#xff0c;springboot会根据类路径上的jar包来自动配置bean&#xff08;比如&#xff1a;springboot发现类路径上的MyBatis相关类&#xff…...