three.js 杂记

欧拉角旋转变换 x,y,z 弧度单位 THREE.MathUtils.DEG2RAD 度数转弧度

new THREE.Euler( - 90 * THREE.MathUtils.DEG2RAD, 0, 0 )

radius:半径

setFromSphericalCoords ( radius : Float, phi : Float, theta : Float ) : this

从球坐标中的radiusphitheta设置该向量。

material.map.anisotropy

anisotropy 沿着轴,通过具有最高纹素密度的像素的样本数。 默认情况下,这个值为1。设置一个较高的值将会产生比基本的mipmap更清晰的效果,代价是需要使用更多纹理样本。 使用renderer.capabilities.getMaxAnisotropy() 来查询GPU中各向异性的最大有效值;这个值通常是2的幂。

八叉树辅助

import { OctreeHelper } from 'three/addons/helpers/OctreeHelper.js';

const helper = new OctreeHelper( worldOctree );

scene.add( helper ); 模型结构辅助

//相机世界方向

camera.getWorldDirection( playerDirection );

物体选择器

import { SelectionBox } from 'three/addons/interactive/SelectionBox.js';

// mirror sphere cube-camera 创建一个具有镜面反射效果的球体的

const cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 1024 );

mirrorSphereCamera = new THREE.CubeCamera( 0.05, 50, cubeRenderTarget );

scene.add( mirrorSphereCamera );

const mirrorSphereMaterial = new THREE.MeshBasicMaterial( { envMap: cubeRenderTarget.texture } );

OOI.sphere.material = mirrorSphereMaterial;

//网格几何体(黄色框框)

const geometry = new THREE.SphereGeometry( 100, 100, 100 );

const wireframe = new THREE.WireframeGeometry( geometry );

const line = new THREE.LineSegments( wireframe );

line.material.depthTest = false;

line.material.opacity = 0.25;

line.material.transparent = true; scene.add( line );

THREE.LineBasicMaterial是Three.js中的一个材质类,用于定义线条渲染的外观。在这个例子中,材质的配置对象包含一个属性vertexColors,它被设置为true。这意味着线条上的每个顶点都可以有自己的颜色,而不是整个线条使用单一颜色。这允许创建更加丰富和多彩的3D线条效果。

//释放内存优化

function disposeArray() {

this.array = null;

}

geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ).onUpload( disposeArray ) );

//两个视图

renderer.setScissorTest( true );

renderer.setClearColor( 0x000000, 1 );

renderer.setScissor( 0, 0, SCREEN_WIDTH / 2, SCREEN_HEIGHT );

renderer.setViewport( 0, 0, SCREEN_WIDTH / 2, SCREEN_HEIGHT );

renderer.render( scene, activeCamera );

renderer.setClearColor( 0x111111, 1 );

renderer.setScissor( SCREEN_WIDTH / 2, 0, SCREEN_WIDTH / 2, SCREEN_HEIGHT );

renderer.setViewport( SCREEN_WIDTH / 2, 0, SCREEN_WIDTH / 2, SCREEN_HEIGHT );

renderer.render( scene, camera );

//arrayC~集中管理多个相机

camera = new THREE.ArrayCamera( cameras );

render:

logarithmicDepthBuffer: logDepthBuf:这个属性用于启用对数深度缓冲。对数深度缓冲是一种技术,它可以改善远距离物体的渲染效果,特别是在透视投影中。当物体非常远时,它们的深度值会变得非常小,这可能导致渲染错误或Z-fighting(两个平面在视图中相互竞争,导致闪烁或不正确的渲染)

{ antialias: true, logarithmicDepthBuffer: logDepthBuf }

相关推荐
IT_陈寒3 分钟前
Python+AI实战:用LangChain构建智能问答系统的5个核心技巧
前端·人工智能·后端
Asuncion0073 分钟前
Docker核心揭秘:轻量级虚拟化的革命
服务器·开发语言·docker·云原生
袁煦丞17 分钟前
MoneyPrinterTurbo一键生成短视频:cpolar内网穿透实验室第644个成功挑战
前端·程序员·远程工作
代码小学僧19 分钟前
让 AI 真正帮你开发:前端 MCP 实用技巧分享
前端
晴殇i27 分钟前
前端鉴权新时代:告别 localStorage,拥抱更安全的 JWT 存储方案
前端·javascript·面试
Json____28 分钟前
使用node Express 框架框架开发一个前后端分离的二手交易平台项目。
java·前端·express
since �28 分钟前
前端转Java,从0到1学习教程
java·前端·学习
码农刚子35 分钟前
ASP.NET Core Blazor简介和快速入门 二(组件基础)
javascript·后端
深思慎考37 分钟前
RabbitMQ 入门:基于 AMQP-CPP 的 C++ 实践指南与二次封装
开发语言·c++·分布式·rabbitmq·api
catchadmin44 分钟前
PHP8.5 的新 URI 扩展
开发语言·后端·php