Babylon.js 第26章 基本的3D网格形状

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

目录

一、盒子

二、平铺框

三、球体

四、柱体

五、胶囊

六、平面

七、平铺平面

八、光盘

九、圆环

十、圆环结

十一、地面

十二、地面高度图

十三、平铺地面


一、盒子

const box = BABYLON.MeshBuilder.CreateBox("box", options, scene);
选项属性 价值 默认值
size (number)每个盒子边的尺寸 1
height (数字)高度大小,覆盖大小选项 尺寸
width (数字)宽度大小,覆盖大小选项 尺寸
depth (数字)深度大小,覆盖大小选项 尺寸
faceColors (Color4[]) 6 个Color4数组,每个盒子面一个 每边的 Color4(1, 1, 1, 1)
faceUV (Vector4[]) 6 个Vector4的数组,每个盒子面一个 每边的 UV(0, 0, 1, 1)
wrap (布尔值)(BJS 4.0 或 >)当为真时,所有垂直边(0、1、2、3)将垂直应用图像纹理 错误的
topBaseAt (数字)(BJS 4.0 或 >)给定 0、1、2、3 的顶部接触侧的底部 1
bottomBaseAt (数字)(BJS 4.0 或 >)底部接触边的底部给定 0、1、2、3 0
updatable (布尔值)如果网格是可更新的,则为真 错误的
sideOrientation (数字)侧向 默认侧
frontUVs (Vector4) 仅当 sideOrientation:BABYLON.Mesh.DOUBLESIDE 设置时 Vector4(0,0, 1,1)
backUVs (Vector4) 仅当 sideOrientation:BABYLON.Mesh.DOUBLESIDE 设置时 Vector4(0,0, 1,1)

mesh:

const box = BABYLON.Mesh.CreateBox("box", size, scene);
const box = BABYLON.Mesh.CreateBox("box", size, scene, updatable, sideOrientation); 

二、平铺框

const box = BABYLON.MeshBuilder.CreateBox("box", options, scene);
选项 价值 默认值
size (number)每个盒子边的尺寸 1
height (数字)高度大小,覆盖大小选项 尺寸
weidth (数字)宽度大小,覆盖大小选项 尺寸
depth (数字)深度大小,覆盖大小选项 尺寸
tileSize (数字)每个瓷砖边的大小 1
tileHeight (number) tile 高度大小,覆盖tileSize选项 瓷砖尺寸
tileWidth (数字)平铺宽度大小,覆盖tileSize选项 瓷砖尺寸
faceColors (Color4[]) 6 个Color4数组,每个盒子面一个 每边的 Color4(1, 1, 1, 1)
faceUV (Vector4[]) 6 个Vector4的数组,每个盒子面一个 每边的 UV(0, 0, 1, 1)
pattern (数字)瓷砖如何在一个面上反射或旋转 NO_FLIP
alignVertical (number)将整个图块定位在面的顶部、底部或中心 中央
alignHorizontal (number)将整个图块定位在面的左侧、右侧或中心 中央
updatable (布尔值)如果网格是可更新的,则为真 错误的
sideOrientation (数字)侧向 默认侧

options模式属性的值是以下常量

BABYLON.Mesh.NO_FLIP, default
BABYLON.Mesh.FLIP_TILE,
BABYLON.Mesh.ROTATE_TILE,
BABYLON.Mesh.FLIP_ROW,
BABYLON.Mesh.ROTATE_ROW,
BABYLON.Mesh.FLIP_N_ROTATE_TILE,
BABYLON.Mesh.FLIP_N_ROTATE_ROW

当平面的宽度或高度无法容纳整数个瓦片时,“切割”瓦片并使用部分瓦片填充平面。发生这种情况时,您可以安排零件拼贴的放置位置,可以在平面的一个边缘上,也可以均匀地在两个相对的边缘上。您可以通过在选项中设置alignVerticalalignHorizo ​​ntal 以及您希望放置整个图块的位置来执行此操作。例如,将alignHorizo​​ntal设置为LEFT意味着最左边的瓦片列将是整个瓦片,而部分瓦片将在最右边的列中。以下常量可用于alignVerticalalignHorizo​​ntal

WebGL BabylonJS如何创建自定义天空盒 天空盒通常是一个立方体盒子,其内部贴有六个方向的纹理,分别代表了上、下、前、后、左、右六个方向的天空景象。这些纹理能够形成一个连续的、无缝的天空背景,使得观察者在场景中的任何位置看到的天空都是一致的。通过调整天空盒的纹理,可以模拟不同的天气、环境和氛围,如晴天、多云、夜晚、黄昏等。 阅读详情

相关推荐

BevFusion (1): 传感器介绍

激光雷达,也称光学雷达(LIght Detection And Ranging)是激光探测与测距系统的简称,它通过测定传感器发射器与目标物体之间的传播距离,分析目标物体表面的反射能量大小、反射波谱的幅度、频率和相位等信息,从而呈现出目标物精确的三维结构信息。激光雷达是自动驾驶车辆的关键传感器,如下图所示,车辆上方旋转的圆柱体对应就是激光雷达传感器。

@bangbang的博客 1447

Babylongjs-创建地面,添加声音

添加地面很简单,使用API: const ground = BABYLON.MeshBuilder.CreateGround("ground", {width:10, height:10}); options 参数设置了两个属性,x 方向的宽度和 z 方向的高度。(是的,我们同意,因为 y 是垂直的,所以属性为宽度和深度会更有意义。) 添加声音也很简单, 如果是连续的声音,用: const sound = new BABYLON.Sound("name", "url to sou.

BoSaidong00的博客 659

YOLOv12改进策略【Neck】| 使用CARAFE轻量级通用上采样算子

CARAFE内容感知的特征重新组合。

Limiiiing的博客 613

Babylon.js 第29 创建自定义网格

/顶点数据里每3个元素组成一个vector3。indices是vector3的索引let normals=[]//空数组添加法线,法线方向,与光照有影响//Color3数组//uv2维数组//添加法线//将法线分配给顶点数组//添加顶点颜色//第二个参数表示网格可更新通常,平面的法线是与平面成直角的向量,使用将位置、索引和法线的数组作为参数的方法在 vertexData 对象上计算法线。

m0_73334402的博客 1272

15 Babylonjs基础入门 高度图

这一节,我们的目标是了解高度图,并学习如何生成真实的地面。 最后效果。 如何实现? 实现没有高度的一个平面效果很简单,直接可以用Babylon.js的方法生成: var groundMaterial = new BABYLON.StandardMaterial("ground", scene); groundMaterial.diffuseTexture = new BABYLON.Textur...

现在学习也不晚 2515

babylon.js第二03:网格放置

某些网格(如 box)具有可在创建过程中设置更改的属性。创建后,对于没有大小调整选项的网格,可以通过缩放网格来更改大小。或是通过三位向量来修改缩放大小。

weixin_63007851的博客 490

1 Babylonjs基础入门 创建基础的模型

此内容通过官方文档加个人理解制作而成。由于个人能力有限,如果有不理解的请去官网寻找资料,或者加我群互相讨论。 MeshBuilder 方法 创建模型的方法一般是: var shape = BABYLON.MeshBuilder.Create Shape(名称,配置项,场景); 配置项的参数允许你设置形状大小以及是否可以更新它之类的操作。 创建立方体 创建一个默认的立方体 var box = BA...

现在学习也不晚 5595

WebGL场景的两种地面构造方法

总述:大部分3D编程都涉及到地面元素,在场景中我们使用地面作为其他物体的承载基础,同时也用地面限制场景使用者的移动范围,还可以通过设置地块的属性为场景的不同位置设置对应的计算规则。本文在WebGL平台上借助Babylon.js库探索并实现了两种地面构造方法,除了两种确定的构造方法外,本文还包含了对一些其他选择的探讨和一些对电子游戏艺术的看法。建议在阅读本文前,先学习3D编程入门知识和Babylon...

weixin_30292745的博客 590

[软件渲染器入门]六-应用纹理、背面剔除以及一些WebGL相关

下面是本系列的最后一个节了。我们将看到如何从Blender中导出贴图和纹理坐标来使我们的网格应用纹理。如果你已经成功的了解了之前的教程,应用一些纹理对你来说应该是小菜一碟。主要概念依旧是在每个顶点间插补一些数据。在本的第二部分中,我们将看到如何提高我们的渲染算法性能。为此,我们将使用背面剔除来使得只有我们能看到的部分被绘制。但是更进一步,我们会用最后的秘密武器:GPU。那么你将会明白为什么OpenGL/WebGL和DirectX这些技术对实时3D游戏非常重要。它们有助于利用GPU而不是CPU来渲染我们的

Nivk经验分享 3978

从内置功能到插件:以 LerpBehavior 为例的架构演进与实践

从内置功能到插件:以 LerpBehavior 为例的架构演进与实践

ttod的博客 161

Babylongjs-创建三棱柱

结合上一篇,我们想要做一个房子出来, 但很明显,那个方块还不太够, 所以我们可以利用网格生成器,创建一个三棱柱和方块结合起来 就像这样 代码如下: const roof = BABYLON.MeshBuilder.CreateCylinder("roof", {diameter: 1.3, height: 1.2, tessellation: 3}); roof.scaling.x = 0.75; roof.rotation.z = Math.PI / 2; roof.posi.

BoSaidong00的博客 760

Babylon.js 第六节 相机和网格行为

默认情况下,拖动平面/轴将根据对象的方向进行修改。要将指定的轴/平面固定在世界上,请设置。缩放网格使用 MultiPointerScaleBehavior()方法,要在不移动附加网格的情况下使用拖动行为,请设置。2.获取拖动的最后位置。当相机达到边界时就会出现反弹。要禁用所有拖动行为,需设置。(3)在网格上添加UI。

m0_73334402的博客 1351

Babylonjs 加载Gltf模型添加动画、点击事件、天空盒、标签

Babylonjs 加载Gltf模型添加动画、点击事件、天空盒、标签

weixin_44043810的博客 4387

BabylonJS + Vue 构建 风场场景 (十一)

* 该代码在“BABYLON”命名空间中定义了一个名为“CustomDynamicTexture”的新类。该类扩展了“BABYLON”库中的“DynamicTexture”类。BabylonJS + Vue 构建 风场场景 (十一) - 小专栏。请不要单独购买,在终会放出静态文件,目前只是放出代码。

haibalai2009的博客 204

Babylon Native无头渲染3D场景

当我们说渲染时,我们通常谈论的是应用程序以 60fps 的速度渲染,无论是游戏还是其他使用 GPU 的应用程序。然而,在其他场景中,我们可能希望使用 GPU 来运行根本不显示任何内容的进程,例如处理视频、操作图像或渲染 3D 资源,也许所有这些都在服务器上运行。在本文中,我将描述如何使用 Babylon Native 来实现此类场景。具体来说,我将展示一个示例,说明如何使用 Babylon Native 在 Windows 上使用 DirectX 11 捕获 3D 资源的屏幕截图。

新缸中之脑 341

Babylon.js 构建 地球,支持切片地图 (五)

针对切片管理 BuildTileTool类 const BABYLON = require('babylonjs'); import {TileTexture} from './TileTexture'; import {EarthTool} from './EarthTool'; import {EarthControl} from './EarthControl'; export class BuildTileTool { constructor(scene, quadKey, size, offset

haibalai2009的博客 957

Babylon实例:用Babylon.js实现手动操作的汉诺塔

监听鼠标抬起事件,在抬起时,比较塔最上面圆盘的索引和拖拽的索引,如果满足放置条件则放在目标塔上。监听鼠标选中事件,记录圆盘对象和初始位置,方便在操作错误的情况下重置圆盘位置。监听鼠标移动事件,动态更新拖拽圆盘的位置。Babylon.js 汉诺塔。

这是一个解决问题的地方 473

Babylon-AST初探-代码生成(Create)

  业余时间写了Babylon-AST的系列文,这里是第一篇,后面还有三篇。趁着今天有空都一起发上来啦。   最近想研究react转小程序代码的,后来感觉跨度有些大,因为平时也会写一些vue的代码,而且vue和小程序更接近一些,所以还是先做了一个vue转小程序的PoC。可是这些都不是重点啊,重点是在这一过程中学习并使用了babylon的AST。因为也是第一次接触,所以想写点笔记记录一下,也希望能...

weixin_34273479的博客 616

Babylon.js 构建 地球,支持切片地图 (六)

针对切片管理 针对EarthControl类 主要是管理主类 负责事件监听后重新刷新切片 const BABYLON = require('babylonjs'); import {EarthTool} from './EarthTool'; import {BuildTileTool} from './BuildTileTool'; export class EarthControl { constructor(scene) { this.scene = scene, this.rangeAera =

haibalai2009的博客 799

ln - 软链接与硬链接区别

引言 在介绍硬链接和软链接之前,首先接受下硬盘相关的知识,主要是了解下 inode 。 硬盘 硬盘设备是由大量的扇区组成的。以 MBR 分区为例。每个扇区的容量为 512 字节。其中第一个扇区最重要。它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用 446 字节,分区表为 64 字节,结束符占用 2 字节。其中分区表每记录一个分区信息就需要 16 字节,这样一来,最多就只...

我的博客 4万+

金山数据恢复V2.0破解版

金山数据恢复V2.0破解版,完美破解,所有功能正常使用。

上一篇: Babylon.js 第25章 物理渲染
下一篇: Babylon.js 第27章 创建参数化网格
Jake N
博客等级 码龄4年 27粉丝 · 43原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值