Bitbybit Docs
    Preparing search index...

    Class BabylonMesh

    处理已在 BabylonJS 场景中的网格,即 draw.drawAnyAsync 返回的对象:移动、旋转和缩放它们,显示和隐藏,设置父节点,拾取和碰撞标志,名称和 id,为生成大量副本而克隆和实例化,以及读回它们的三角形。旋转以度为单位;位置和距离以场景单位表示。

    Index

    Constructors

    edit

    • 将多个网格合并为一个新网格,它比许多独立的网格绘制得更快。

      disposeSource 为 true 时源网格被移除;当这些网格合计超过 6.5 万个顶点时设置 allow32BitsIndices,并使用子网格选项来保留各自的材质。

      Parameters

      Returns Mesh

      合并后的网格

      const merged = bitbybit.babylon.mesh.mergeMeshes({ arrayOfMeshes: [meshA, meshB], disposeSource: true, allow32BitsIndices: true, subdivideWithSubMeshes: false, multiMultiMaterials: false });
      
    • 为网格的每个三角形赋予自己的顶点和法线,使各面显示为平面小面而不是跨边平滑;网格被就地更改并返回。

      Parameters

      Returns Mesh

      同一个网格,已改为平面着色

      const faceted = bitbybit.babylon.mesh.convertToFlatShadedMesh({ babylonMesh: mesh });
      
    • 创建网格及其子节点的副本,它与原网格共享几何并放置在同一位置;副本像原网格一样投射和接收阴影。

      Parameters

      Returns Mesh

      副本

      const copy = bitbybit.babylon.mesh.clone({ babylonMesh: mesh });
      bitbybit.babylon.mesh.setPosition({ babylonMesh: copy, position: [10, 0, 0] });
    • 在每个给定位置创建网格的一个副本,顺序相同;副本与原网格共享几何。

      Parameters

      Returns Mesh[]

      每个位置一个副本

      const copies = bitbybit.babylon.mesh.cloneToPositions({ babylonMesh: mesh, positions: [[0, 0, 0], [10, 0, 0], [20, 0, 0]] });
      

    get

    • 读取网格所挂载的父节点,即它随之移动的节点;顶层的网格没有父节点。

      Parameters

      Returns Node

      父节点

    • 设置网格是否响应指针拾取,当 includeChildren 为 true 时也包括其子节点;不可拾取的网格会被点击和拾取射线跳过。

      Parameters

      Returns void

      bitbybit.babylon.mesh.setPickable({ babylonMesh: mesh, pickable: true, includeChildren: true });
      
    • 读取网格是否可以用指针拾取。

      Parameters

      Returns boolean

      当网格响应拾取时为 true

    • 查找场景中名称包含给定文本的每个网格,区分大小写,按场景顺序排列。

      Parameters

      Returns AbstractMesh[]

      匹配的网格

      const wheels = bitbybit.babylon.mesh.getMeshesWhereNameContains({ name: "wheel" });
      
    • 列出挂在某个网格之下的网格:所有后代,或当 directDescendantsOnly 为 true 时只列出直接子节点。

      Parameters

      Returns AbstractMesh[]

      子网格

      const parts = bitbybit.babylon.mesh.getChildMeshes({ babylonMesh: model, directDescendantsOnly: false });
      
    • 查找场景中 id 与给定值完全相同的每个网格;id 不必唯一,因此可能有多个匹配。

      Parameters

      Returns AbstractMesh[]

      具有该 id 的网格

      const meshes = bitbybit.babylon.mesh.getMeshesOfId({ id: "wheel" });
      
    • 查找场景中 id 与给定值完全相同的第一个网格;多个网格共用该 id 时使用 getMeshesOfId

      Parameters

      Returns AbstractMesh

      具有该 id 的第一个网格

      const mesh = bitbybit.babylon.mesh.getMeshOfId({ id: "wheel" });
      
    • 查找具有给定唯一 id 的网格,该 id 是场景为每个网格一次性分配的数字,可用 getUniqueId 读取。

      Parameters

      Returns AbstractMesh

      具有该唯一 id 的网格

      const id = bitbybit.babylon.mesh.getUniqueId({ babylonMesh: mesh });
      const same = bitbybit.babylon.mesh.getMeshOfUniqueId({ uniqueId: id });
    • 读取网格的 id,即由 setId 或创建它的加载器设置的标签。

      Parameters

      Returns string

      id

    • 读取网格的唯一 id,即场景为每个网格一次性分配且永不重用的数字。

      Parameters

      Returns number

      唯一 id 数值

    • 以网格自身坐标系中三个点的列表的形式读取网格的三角形,这是 jscad.shapes.fromPolygonPoints 和类似构建器接受的形式。网格必须由三角形构成。

      Parameters

      Returns Point3[][]

      三角形,每个为三个点的列表

      const triangles = bitbybit.babylon.mesh.getVerticesAsPolygonPoints({ babylonMesh: mesh });
      
    • 读取网格的名称,由 setName 或创建它的任何东西设置。

      Parameters

      Returns string

      名称

    • 读取网格的材质,即绘制其面所用的表面描述。

      Parameters

      Returns Material

      材质

    • 读取网格相对于其父节点的位置,以点表示。

      Parameters

      Returns Point3

      以点表示的位置

    • 读取网格在世界坐标系中的位置,已应用每个父节点的变换。

      Parameters

      Returns Point3

      以点表示的世界位置

    • 读取网格绕 X、Y 和 Z 的旋转,以弧度表示,与其 rotation 属性保存的一致。

      Parameters

      Returns Point3

      以弧度表示的旋转角度

    • 读取网格沿 X、Y 和 Z 的缩放系数;1 表示未缩放。

      Parameters

      Returns Point3

      缩放系数

    instance

    • createMeshInstanceAndTransform 一样创建网格的已放置实例,但不返回它;适用于只需要副本显示出来的脚本。

      Parameters

      Returns void

      bitbybit.babylon.mesh.createMeshInstanceAndTransformNoReturn({ mesh, position: [10, 0, 0], rotation: [0, 45, 0], scaling: [1, 1, 1] });
      
    • 创建网格的实例,即共享其几何且绘制开销很低的轻量副本,并以给定的位置、旋转(以度为单位)和缩放放置它。

      带子节点的网格为每个子节点得到一个实例,收集在一个新容器下;原网格被隐藏。

      Parameters

      Returns Mesh

      容纳这些实例的容器

      const instance = bitbybit.babylon.mesh.createMeshInstanceAndTransform({ mesh, position: [10, 0, 0], rotation: [0, 45, 0], scaling: [1, 1, 1] });
      
    • 创建网格的实例,即共享其几何且在需要许多相同物体时绘制开销很低的轻量副本,放置在原网格所在位置。

      带子节点的网格为每个子节点得到一个实例,收集在一个新容器下。

      Parameters

      Returns Mesh

      实例,或容纳子实例的容器

      const instance = bitbybit.babylon.mesh.createMeshInstance({ mesh });
      bitbybit.babylon.mesh.setPosition({ babylonMesh: instance, position: [10, 0, 0] });

    intersects

    • 判断两个网格是否重叠,依据它们的包围盒:默认为轴对齐的包围盒,当 precise 为 true 时为跟随每个网格旋转的包围盒;includeDescendants 也测试它们的子节点。

      Parameters

      Returns boolean

      当两个网格重叠时为 true

      const touching = bitbybit.babylon.mesh.intersectsMesh({ babylonMesh: meshA, babylonMesh2: meshB, precise: true, includeDescendants: false });
      
    • 判断一个点是否位于网格的包围盒内。

      Parameters

      Returns boolean

      当点位于网格边界之内时为 true

      const inside = bitbybit.babylon.mesh.intersectsPoint({ babylonMesh: mesh, point: [0, 1, 0] });
      

    memory

    • 从场景中移除网格并释放其 GPU 资源;之后该网格不能再使用。未给出网格时什么也不发生。

      Parameters

      Returns void

      bitbybit.babylon.mesh.dispose({ babylonMesh: mesh });
      

    move

    • 使网格沿其自身的前方向(局部 Z 轴)移动 distance 个场景单位;转动过的网格朝其面对的方向移动。

      Parameters

      Returns void

      bitbybit.babylon.mesh.moveForward({ babylonMesh: mesh, distance: 5 });
      
    • 使网格逆其自身的前方向(局部 Z 轴)移动 distance 个场景单位。

      Parameters

      Returns void

    • 使网格沿其自身的上方向(局部 Y 轴)移动 distance 个场景单位。

      Parameters

      Returns void

    • 使网格逆其自身的上方向(局部 Y 轴)移动 distance 个场景单位。

      Parameters

      Returns void

    • 使网格沿其自身的右方向(局部 X 轴)移动 distance 个场景单位。

      Parameters

      Returns void

    • 使网格逆其自身的右方向(局部 X 轴)移动 distance 个场景单位。

      Parameters

      Returns void

    • 在当前旋转的基础上使网格绕其自身 Y 轴转动 rotate 度,就像汽车左转或右转。

      Parameters

      Returns void

      bitbybit.babylon.mesh.yaw({ babylonMesh: mesh, rotate: 45 });
      
    • 在当前旋转的基础上使网格绕其自身 X 轴转动 rotate 度,就像机头上仰或下俯。

      Parameters

      Returns void

    • 在当前旋转的基础上使网格绕其自身 Z 轴转动 rotate 度,就像机翼倾斜。

      Parameters

      Returns void

    • 使网格绕经过 position 的轴转动 angle 度,因此网格围绕该点公转而不是原地自转。

      Parameters

      Returns void

      bitbybit.babylon.mesh.rotateAroundAxisWithPosition({ mesh, position: [0, 0, 0], axis: [0, 1, 0], angle: 90 });
      

    set

    • 使一个网格成为另一个网格的子节点,此后它随父节点一起移动、转动和缩放;其位置变为相对于父节点。

      Parameters

      • inputs: SetParentDto

        网格以及要设为其父节点的网格

      Returns void

      bitbybit.babylon.mesh.setParent({ babylonMesh: wheel, parentMesh: car });
      
    • 为网格打开或关闭碰撞检测,当 includeChildren 为 true 时也包括其子节点,使启用了碰撞的相机或其他碰撞体无法穿过它。

      Parameters

      Returns void

      bitbybit.babylon.mesh.setCheckCollisions({ babylonMesh: walls, checkCollisions: true, includeChildren: true });
      
    • 让网格(当 includeChildren 为 true 时也包括其子节点)对指针仅仅从其上方移过作出响应,默认关闭,因为每次指针移动都要进行一次拾取。

      Parameters

      Returns void

      bitbybit.babylon.mesh.enablePointerMoveEvents({ babylonMesh: mesh, includeChildren: true });
      
    • 使网格(当 includeChildren 为 true 时也包括其子节点)不再响应指针移动,恢复默认。

      Parameters

      Returns void

      bitbybit.babylon.mesh.disablePointerMoveEvents({ babylonMesh: mesh, includeChildren: true });
      
    • 设置网格的 id,这是 getMeshOfId 用来查找它的标签,不必唯一。

      Parameters

      Returns void

    • 设置网格的名称,当 includeChildren 为 true 时也设置其子节点的名称;名称是 getMeshesWhereNameContains 搜索的内容。

      Parameters

      Returns void

    • 为网格赋予材质,当 includeChildren 为 true 时也包括其子节点;材质决定其表面的颜色、光泽和透明度。

      Parameters

      Returns void

      const material = bitbybit.babylon.material.pbrMetallicRoughness.create({ name: "red", baseColor: "#ff0000", emissiveColor: "#000000", metallic: 0.2, roughness: 0.6, alpha: 1, backFaceCulling: false, zOffset: 0 });
      bitbybit.babylon.mesh.setMaterial({ babylonMesh: mesh, material, includeChildren: true });
    • 将网格或其实例放置在相对于其父节点的某个点上。

      Parameters

      Returns void

      bitbybit.babylon.mesh.setPosition({ babylonMesh: mesh, position: [0, 5, 0] });
      
    • 以绕 X、Y 和 Z 的角度(以度为单位)设置网格或其实例的旋转,替换其当前旋转。

      Parameters

      Returns void

      bitbybit.babylon.mesh.setRotation({ babylonMesh: mesh, rotation: [0, 90, 0] });
      
    • 设置网格或其实例沿 X、Y 和 Z 的缩放系数,替换其当前缩放;1 表示未缩放。

      Parameters

      Returns void

      bitbybit.babylon.mesh.setScale({ babylonMesh: mesh, scale: [2, 1, 1] });
      
    • 将网格或其实例的当前缩放在所有轴上乘以同一个系数,因此 2 使其现有尺寸加倍。

      Parameters

      Returns void

    updates

    • 就地移动、旋转、缩放已绘制的网格并重新着色,而不重新绘制,当只有放置位置或颜色变化时这样更快。

      此处的 rotation 以弧度表示。colours 是一个十六进制颜色,或一个列表,每个子网格一项,或此类绘制的每个点或直线一项;其他列表使用其第一项。

      Parameters

      Returns void

      bitbybit.babylon.mesh.updateDrawn({ babylonMesh: mesh, position: [0, 5, 0], rotation: [0, Math.PI / 2, 0], scaling: [1, 1, 1], colours: "#ff0000" });
      

    visibility

    • 设置网格的可见程度,从 0 表示完全透明到 1 表示完全显示,中间值使其渐隐;includeChildren 将相同的值应用于其子网格。

      Parameters

      Returns void

      bitbybit.babylon.mesh.setVisibility({ babylonMesh: mesh, visibility: 0.5, includeChildren: true });
      
    • 隐藏网格但不从场景中移除它,当 includeChildren 为 true 时也隐藏其子网格;show 使其恢复显示。

      Parameters

      Returns void

      bitbybit.babylon.mesh.hide({ babylonMesh: mesh, includeChildren: true });
      
    • 显示被 hide 或隐藏绘制设为不可见的网格,当 includeChildren 为 true 时也显示其子网格。

      Parameters

      Returns void

      bitbybit.babylon.mesh.show({ babylonMesh: mesh, includeChildren: true });