【前端知识】Three 学习日志(一)—— Three.js 的简单尝试

news2024/11/28 18:50:11

Three 学习日志(一)—— Three.js 的简单尝试

Three.js是一个使用JavaScript编写的轻量级3D图形库,它可以在浏览器中渲染出3D场景。在学习Three.js的过程中,建立基本场景是一个重要的第一步。通过设置相机、场景和渲染器等组件,可以创建一个简单的3D场景。在建立基本场景之后,可以通过添加模型、材质、光源等元素来丰富场景效果。此外,使用requestAnimationFrame方法可以让场景动起来,实现动画效果。

一、简单尝试 Three.js

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Learn Three.js</title>
    <!-- 引入three,下载地址参考:http://www.webgl3d.cn/pages/aac9ab/#%E7%89%B9%E5%AE%9A%E7%89%88%E6%9C%ACthree-js%E6%96%87%E4%BB%B6%E5%8C%85%E4%B8%8B%E8%BD%BD -->
    <script src="../build/three.js"></script>
</head>

<body>
    <script>
        // 任意调用API,为了检测three.js是否引入成功
        console.log(THREE.Scene);
        // 创建3D场景对象Scene
        const scene = new THREE.Scene();
        // 创建一个长方体几何对象Geometry
        const geometry = new THREE.BoxGeometry(100, 100, 100);
        // 创建一个材质对象Material(MeshBasicMaterial 为网格基础材质)
        const material = new THREE.MeshBasicMaterial({
            color: 0xff0000,//0xff0000设置材质颜色为红色
        });
        // 创建物体:网格模型(Mesh为网格模型)
        // 两个参数分别为上面创建的几何体geometry、材质material
        const mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh
        // 设置网格模型在三维空间中的位置坐标,默认是坐标原点
        mesh.position.set(0, 10, 0);
        // 构建好物体后,将物体添加到场景中
        scene.add(mesh);
        // 至此,我们的物体已经添加到场景中,但我们并不能立即看到构建的物体,还需要通过虚拟相机进行渲染
        // 实例化一个透视投影相机对象
        const camera = new THREE.PerspectiveCamera();
        // 30:视场角度, width / height:Canvas画布宽高比, 1:近裁截面, 3000:远裁截面
        // const camera = new THREE.PerspectiveCamera(30, width / height, 1, 3000);
        // 根据需要设置相机位置具体值
        camera.position.set(200, 200, 200);
        //相机观察目标指向Threejs 3D空间中某个位置
        camera.lookAt(0, 0, 0); //坐标原点
        // camera.lookAt(mesh.position);//指向mesh对应的位置
        // 定义相机输出画布的尺寸(单位:像素px)
        const width = 800; //宽度
        const height = 500; //高度
        // 创建渲染器对象
        const renderer = new THREE.WebGLRenderer();
        // 设置渲染器宽高
        renderer.setSize(width, height);
        // 通过渲染器,将场景和相机进行结合、渲染,得到一个Canvas元素
        renderer.render(scene, camera); //执行渲染操作
        // 将渲染结果加入页面中
        document.body.appendChild(renderer.domElement);
    </script>
</body>

</html>

二、效果展示
在这里插入图片描述

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

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

相关文章

ASP.NET区域LIS系统源码 SaaS模式B/S架构的LIS系统源码

区域LIS系统源码 SaaS模式B/S架构的LIS系统源码 区域LIS可促进基层医疗机构条码化检验业务管理&#xff0c;为基层搭建标本采集、标本核收、标本检验、室内质控、报告发布、统计分析的规范流程&#xff0c;同时为医疗机构提供检验诊断知识库提升检验业务水准。 技术架构&#x…

Ubantu 安装中文输入法

2、通过命令行安装搜狗输入法 sudo dpkg -i sogoupinyin_版本号_amd64.deb 注&#xff1a; 如果安装过程中提示缺少相关依赖&#xff0c;则执行如下命令解决&#xff1a; sudo apt -f install 3、注销计算机即可正常使用搜狗输入法 Ubuntu20.04安装搜狗输入法步骤 1、更…

Python 计算机二级知识点整理 模拟考试2

1. 2. 一个进程正在等待某一事件的发生而暂时停止执行时&#xff0c;在这种状态下&#xff0c;即使把CPU等资源分配给它&#xff0c;该进程也不能运行&#xff0c;即处于等待状态&#xff0c;又称为阻塞状态或封锁状态。 3. 4&#xff0c; 成功将一个元素退队就证明是之前循环…

Java命令行形式将程序打包成jar包,防止报错:没有主清单属性

1.编写java文件 新建空文件夹src, bin src文件夹下面新建文件 HelloWorld.java package com.ray;public class HelloWorld{public static void main(String[] args) {System.out.println("Hello!jar");} }2.javac编译文件到bin c:\tools\java1\src>javac -d .…

Matlab--高等应用数学问题的MATLAB求解

1.求解n阶导数 %% %如何求解n阶导数&#xff0c;用到diff(f,n) syms x; fsin(x)/(x^24*x3); diff(f,4) %% %如何求解100阶导数 tic,Fdiff(f,100);toc 2.Matlab语言的优越性 %% %MATLAB的优点: %MATLAB 语言的简洁高效性 %MATLAB 语言的科学运算功能 %MATLAB 语言的绘图功能 …

【新书推荐】大模型赛道如何实现华丽的弯道超车 —— 《分布式统一大数据虚拟文件系统 Alluxio原理、技术与实践》

文章目录 大模型赛道如何实现华丽的弯道超车 —— AI/ML训练赋能解决方案01 具备对海量小文件的频繁数据访问的 I/O 效率02 提高 GPU 利用率&#xff0c;降低成本并提高投资回报率03 支持各种存储系统的原生接口04 支持单云、混合云和多云部署01 通过数据抽象化统一数据孤岛02 …

简单介绍十款可以免费使用的API测试工具

API开发应该是后端开发最常见的工作&#xff0c;而调试和测试API是非常关键的&#xff0c;这篇文章简单介绍几款常用的工具以供大家参考。 SoapUI SoapUI是很老牌的工具的&#xff0c;在之前Webservice盛行的时候经常会用到。 现在官方推出了Pro版本的ReadyAPI&#xff0c;但要…

结合CRM 与项目管理,扩大你的业务和客户群

在当今的数字化时代&#xff0c;企业在很大程度上依赖技术来简化运营和确保增长。业务运营的两个重要组成部分是客户关系管理&#xff08;CRM&#xff09;和项目管理。虽然两者都是独立的学科&#xff0c;但它们有一个共同的目标&#xff1a;改进业务流程、提高客户满意度并推动…

一个简单好用安全的开源交互审计系统、轻量级堡垒机系统

一、开源项目简介 Next Terminal是一个简单好用安全的开源交互审计系统&#xff0c;支持RDP、SSH、VNC、Telnet、Kubernetes协议。 二、开源协议 使用AGPL-3.0开源协议 三、界面展示 四、功能概述 Next Terminal是一个轻量级堡垒机系统&#xff0c;支持RDP、SSH、VNC、Tel…

【校招VIP】产品基础知识之学习渠道

考点介绍&#xff1a; 产品经理是一项复合型的工作&#xff0c;需要学习掌握的知识很多&#xff0c;能否通过学习掌握并构建一套属于自己的产品知识体系&#xff0c;是成为一名优秀产品经理的重要条件。系统化学习方法&#xff0c;可以分为以下6个步骤&#xff1a; 1、明确的学…

Day66|图part5:130. 被围绕的区域、827.最大人工岛

130. 被围绕的区域 leetcode链接&#xff1a;题目链接 这题看起来很复杂&#xff0c;其实跟之前找飞地和找边缘地区的是差不多的&#xff0c;主要分三步&#xff1a; 使用dfs将边缘的岛都找出来&#xff0c;然后用A代替防止混淆&#xff1b;再用dfs找中间不与任何岛相连的飞地…

天软特色因子看板 (2023.09 第07期)

该因子看板跟踪天软特色因子A02002 (近一月尾盘成交占比(%))&#xff0c;该因子为近一个月尾盘成交量占比均值因子&#xff0c;用以刻画股票在收盘时&#xff0c;主力资金的流动影响。近一月尾盘成交占比(%)越小&#xff0c;表示多方或空方无力量。近一月尾盘成交占比(%)越大&a…

Qt5开发及实例V2.0-第一章Qt概述及Qt5的安装

Qt5开发及实例V2.0-第一章-Qt概述及Qt5的安装 第一章-Qt概述1.1 什么是Qt1.2 Qt 5的安装1.2.1 下载安装Qt 51.2.2 运行Qt 5 Creator1.2.3 Qt 5开发环境 1.3 Qt 5开发步骤及实例1.3.1 设计器Qt 5 Designer实现1.3.2 代码实现简单实例 L1.2 Qt 5安装&#xff1a;概念解析L1.3 Qt …

JS Set和Map数据结构

Set和Map数据结构 1. Set数据结构1.1 Set 增删改查1.1.1 add() 方法1.1.2 delete()1.1.3 has()1.1.4 clear()1.1.5 size 1.2 Set 遍历方法1.2.1 keys()1.2.2 values()1.2.3 entries()1.2.3 forEach() 2. Map数据类型2.1 Map 增删改查2.1.1 set()2.1.2 get()2.1.3 has()2.1.4 de…

【C++从0到王者】第三十一站:map与set

文章目录 一、关联式容器二、pair键值对三、set1. set的介绍2. set的部分接口以及应用3. count4. lower_bound和upper_bound5. equal_range6. multiset容器 四、map1. map的介绍2. map的一些常见接口以及使用3. map的[]运算符重载4. 使用map改进一些题5. multimap容器 五、map和…

Laravel框架 - IOC容器详解

IOC 容器代码 好了&#xff0c;说了这么多&#xff0c;下面要上一段容器的代码了. 下面这段代码不是laravel 的源码&#xff0c; 而是来自一本书《laravel 框架关键技术解析》. 这段代码很好的还原了laravel 的服务容器的核心思想. 代码有点长&#xff0c; 小伙伴们要耐心看. …

分享VR眼镜加密播放器OEM方案

随着科技的发展&#xff0c;电子成品更新换代很快&#xff0c;用户的娱乐工具也更加多样化&#xff0c;从电脑、手机、平板在到现在使用越来越多的VR眼镜&#xff0c;给用户的体验也越来越多样。而对于内容提供商来说&#xff0c;内容是其竞争优势所在。那么如何做好视频在VR眼…

【Unity】【C#】【VS】如何将VS写的通用C#窗体程序修改为Unity程序

【背景】 需要将一个Visual2019写的C#用Unity改写。 Unity写窗体程序的一大优点就是美观了,看看这默认界面。 但是缺点就是启动时有个Unity过场动画。 【问题】 Unity虽然用的也是C#,但是和Visual2019的通用窗体C#采用的界面显示的库,图像处理,组成一个脚本的基本函数等…

Linux 作业

一. 题目 二.作业内容 第一题&#xff1a; 因老师要求上传安装后远程连接XShell截图&#xff0c;如下&#xff1a; 制作yum缓存&#xff1a;[rootRHEL8 ~]# yum makecache 安装gcc&#xff1a;[rootRHEL8 ~]# yum install gcc -y 制作快照&#xff1a;快照&#xff0c;初始 s…

《rust学习一》 fleet 配置rust环境

最近被网上的rust教徒洗脑了&#xff0c;尝试一下学习rust语言&#xff0c;首先搭建开发环境 准备工作&#xff1a; 安装rust&#xff0c;fleet 第一步&#xff1a;在fleet内打开空文件夹 第二步&#xff1a;创建项目文件 cargo new HelloWorld第三步&#xff1a;Rust&#x…