Three.js 之几何体
几何体
在 Three.js 中,所有的几何体都是通过 THREE.BufferGeometry 继承而来。在设置几何体的反面的素材时,需要设置材质的的 side 为 THREE.DoubleSide,否则反面不会显示。
2D 几何体
2D 几何体只有两个维度 X 轴和 Y 轴,没有 Z 轴。
THREE.PlaneGeometry
用来渲染矩形平面几何。当 几何创建完毕后,获取几何的属性需要使用 geometry.parametres.X 来获取。
THREE.CircleGeometry
创建一个圆形几何平面。
角度和弧度之间的计算公式:
const deg2rad = (degrees) => (degrees * Math.PI) / 180
const...
Three.js 之材质
Three.js 之材质
材质的作用是在几何体表面进行渲染,可以渲染特定的颜色或者图片。
材质种类
MeshBasicMaterial
基础材质,不会被光源所影响。
MeshDepthMaterial
材质的亮度由材质和相机之间的距离决定,一般和其他材质一起使用,通过 blend properties 混合不同的材质
THREE.MeshLambertMaterial
基础材质,会被光源所影响
THREE.MeshPhongMaterial
可以控制反光的材质,会有一种被耀眼的光照射到的感觉
属性:
emmisive:材质反光的颜色
emissiveIntensity:材质反光的强度
specular:被照射到的光的颜色
shininess:反...
Three.js 之相机介绍
透视相机(perspective camera)
在透视相机渲染出来的 3D 场景中,远处的物体比较小,近处的物体比较大。
透视相机的属性
视野区域(FOV):人眼所能看到的视野一般是 180°,但是在显示器中,显示的区域没有那么大,FOV 用来控制视野区域的,一般是 60° - 90°。
比例(aspect):水平方向和垂直方向的方面比例,一般情况下可以设置成:window.innerWidth / window.innerHeight
近距(near):近距属性设置场景和相机之间的距离,一般设置一个比较小的值(0.1)来渲染场景中的所有物体。
远距(far):远距设置相机能够看到多远的距离,过于小会导致场景的一部分不会被渲染;过大则会影响渲染性能。
聚焦...
Three.js 之灯源介绍
光源介绍
通过光源才能看到场景,如果没有光源,场景就是黑的(特殊情况除外)。
光源种类
灯光名称
灯光描述
是否有阴影效果
PointLight(发散光)
发散光类似于手持蜡烛时发出来的光,周围被照射到的物体都会有阴影效果。
有
SpotLight(聚光灯)
聚光灯顾名思义,可以实现舞台上的聚光灯效果,可以控制方向和角度,通过 spotLight.camera.shadow 属性设置阴影效果,设置 camera.shadown.fov 无效,需要设置 spotLight.angle 才可以
有
...
Three.js 介绍
相关概念:
场景(scene):场景里面包含所有模型和几何体。
相机(camera):相机决定了你看到场景的哪一部分。
渲染器(renderer):通过渲染器,把相机看到的那一部分场景展示在屏幕上。
几何体(Mesh):几何体由几何位置和几何材质组成,几何位置决定它的形状,几何材质决定它的外表样式。
几何位置
几何位置由多个面组成,例如一个正方体由六个面组成,每一个面都由两个三角形组成,每一个三角形都有三个点(Point)
在使用几何位置生成面的时候要注意:几何位置生成的顺序对显示有影响,如果是顺时针生成的面,则是...
JavaScript 之 using 关键字
在 ES2022 中新增了一个提案,它叫 ECMAScript 显式资源管理(ECMAScript Explicit Resource Management),目前是 stage 3 阶段。这个提案的主要内容是新增了一个 using 关键字,using 关键字的作用是用来定义变量,并且在变量的生命周期中自动释放掉当前变量引用的资源(内存,I/O 等)。例如我们在 Node.js 中会通过 fs 来读写文件,使用 using 方法可以在读写完毕后释放对文件的引用。
提案主要解决的问题
使用 using 关键字来使用资源,它会在使用完毕以后(根据 API 的具体场景)自动对资源进行释放。
各种不一致的资源管理方式:
ECMAScript 的迭代...
JWT、OAUTH2、Session ID 是什么?
什么是 JWT,OAUTH2,以及 Session ID
JWT
JWT(JSON Web Token)是一种用于在网络应用之间安全传递信息的开放标准。它通过将信息编码成 JSON格式并使用数字签名或加密来确保数据的完整性和安全性。JWT 常常用于身份验证和声明传递,特别是在分布式系统中。
一个 JWT 通常由三部分组成:头部(Header)、载荷(Payload)和签名(Signature):
头部(Header):
头部通常由两部分组成,它们使用 Base 64 编码后合并在一起,并用点号分隔。头部包含有关令牌的元信息,如令牌的类型(通常是 “JWT” )和使用的签名算法。例如:
{
"alg": "HS256",
"typ": "JWT"...
使用 Jekyll 搭建 Github Pages 记录
Jekyll 安装指南
使用 Jekyll 在 Github Pages 上面搭建一个博客站点,同时具有良好的 SEO 效果。
安装建议:在下载软件和在终端执行命令建议都通过国外代理进行下载,避免因为网络原因导致的安装失败或者一直卡住
这个指南主要针对 Windows 用户
安装步骤:
在 https://rubyinstaller.org/downloads 上下载 RubyInstaller,自行选择对应的版本,我下载的是 Ruby+Devkit 3.2.2-1 (x64)
安装过程中注意事项:
勾选添加 Ruby 到环境变量
当安装完毕后弹出一个命令框时,提示你选择一个 MSYS2 componen...
50 post articles, 7 pages.