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

2023-09-18 14:00:39

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>

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

更多推荐

外国固定资产管理系统功能有哪些

很多公司都在寻找提高自己资产管理效益的方法。为了满足这一要求,国外的固定资产管理系统已经发展成多种形式。以下是国外一些常见的固定资产管理系统的特点:自动化和智能化:许多现代固定资产管理系统采用自动化和数字化技术,以简化流程,减少错误,提高数据准确性。这些系统通常包括电子库存管理、一键生成报告和实时跟踪资产位置。集成:国

拿到第一个用户并提权

搭建环境真机安装python环境(python-IDE)java环境(java-IDE)PHP环境(phpstudy)火狐浏览器延长支持板(需要安装HackBar扩展插件)notepad++虚拟机安装kalilinuxWin10(CFT工具包,为防止有后门不安装在真机)拿到第一个用户权限并获取root权限1.信息探测探

修复Ripro主题扫码后空白或null或array的问题

WordPressRipro主题使用的人比较多,绝大部分用的盗版主题,RiPro主题使用虎皮椒V3支付接口在使用弹窗支付的时候,微信或者支付宝扫码后出现null或array,会发生在ripro所有版本中。下面是修复方法:打开ripro主题inc目录下的core-ajax.php文件,即如图位置进行编辑:服务器是宝塔的用

2023中国文化科技融交会 | 虚拟动力邀您共探数字人技术助力文旅产业数字化创新

2023年9月21日,由江苏省委宣传部、江苏省科学技术厅、江苏省委网信办、江苏省文化和旅游厅、江苏省广播电视局、南京市人民政府联合主办的2023中国(南京)文化和科技融合成果展览交易会在南京国际博览中心(元通)盛大开幕。展会亮点广|州|虚|拟|动|力作为深耕3D、AI虚拟人领域技术产品7年的提供商及解决方案提供商,广州

提升技术招聘有效性| 杜绝候选人刷题应试

企业在技术人员招聘中,时常出现候选人“笔试考高分,工作写Bug,绩效来垫底”的尴尬窘境,让企业倍感煎熬。不仅浪费时间精力、也增大招人的成本投入。如何招到真正合适的技术人选,成为摆在企业心头的难题。合适的技术人才,意味能满足实际工作的需求,而非仅有一堆理论知识储备。对企业而言,候选人解决实际问题的工程能力>理论知识。技术

【记录】深度学习环境配置(pytorch版)

1080面对Transformer连勉强也算不上了,还是要去用小组的卡完整记一个环境配置,方便后面自用✍️目前要简单许多,因为显卡驱动已经装好,后安装的库版本与其对应即可。nvidia-smi查看GPU信息**CUDA版本12.2conda-V查询conda版本22.9.0新建conda环境准备装python3.8co

【PyTorch 攻略(5/7)】训练和模型

一、说明训练模型是一个迭代过程。每次迭代称为纪元。该模型对输出进行猜测,计算其猜测中的误差(损失),收集误差相对于其参数的导数,并使用梯度下降优化这些参数。我们从这里加载前面的代码。%matplotlibinlineimporttorchfromtorchimportnnfromtorch.utils.dataimpo

1399: 最小生成树

题目描述最小生成树问题是实际生产生活中十分重要的一类问题。假设需要在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。这时,自然需要考虑这样一个问题,即如何在最节省经费的前提下建立这个通信网。可以用连通网来表示n个城市以及n个城市之间可能设置的通信线路,其中网的顶点表示城市,边表示两个城市之间的线路,赋于边

Python中的函数未定义的错误

前言:嗨喽~大家好呀,这里是魔王呐❤~!python更多源码/资料/解答/教程等点击此处跳转文末名片免费获取通过这个解释,我们将了解当Python程序显示类似NameError:name‘’isnotdefined的错误时,即使该函数存在于脚本中,也会出现这种情况。我们还学习了当我们使用拼写错误的变量或没有导入的内置函

Zookeeper集群 + Kafka集群

目录1、Zookeeper1.1Zookeeper概述1.1.1Zookeeper定义1.1.2Zookeeper工作机制1.1.3Zookeeper特点1.1.4Zookeeper数据结构1.1.5Zookeeper应用场景1.2Zookeeper选举机制1.3部署Zookeeper集群1.3.1安装前准备1.3.2

肖sir___环境的讲解详情__002

一、环境讲解1、jdk什么是JDK?JDK的作用?JDK是java语言的软件开发工具包,能解释java程序,编译java语言,没有jdk的话无法编译Java程序。包含了各种类库和工具,机器不是直接识别语言的,会借助工具的编译器,可以理解为翻译官,将一门语言翻译为机器可以识别的语言,Jdk能对Java进行编译,我们的工具

热文推荐