three 模型加载器(上)

584 阅读10分钟

3DMLoader 是 Three.js 中用于加载 .3dm 格式(Rhino 3D 模型文件)文件的加载器。你可以使用 3DMLoader 来加载由 Rhino 软件创建的模型,并将其导入到 Three.js 场景中进行渲染和交互。
DRACOLoader 是 Three.js 中的一个加载器,用于加载经过 Draco 压缩的 3D 模型文件。Draco 是 Google 开发的一种 3D 数据压缩库,它可以显著减少几何数据(如顶点、面等)的大小,因此在网络传输和模型加载上具备更高的效率。
FontLoader 是 Three.js 中的一个加载器,用于加载字体文件(一般是 .json 格式),以便在 Three.js 场景中创建 3D 文字。FontLoader 通常与 TextGeometry 一起使用,以生成具有三维效果的文本。
GLTFLoader 是 Three.js 中的一个加载器,用于加载 GLTF(GL Transmission Format)或 GLB 格式的 3D 模型。这两种格式通常被用于高效传输 3D 模型数据,包含了几何、材质、动画、场景层次结构等信息,是一种轻量、高性能的模型格式。GLB 是 GLTF 的二进制版本,能够在一个文件中包含所有资源。
KTX2Loader 是 Three.js 中的一个加载器,用于加载 .ktx2 格式的纹理文件。.ktx2 文件使用 GPU 纹理压缩(GPU Texture Compression,简称 GPU TC),例如 Basis Universal 和其他压缩格式,以便有效地减少纹理文件大小并提高加载和渲染性能,尤其适用于移动设备和 WebGL 应用场景。
LDrawLoader 是 Three.js 的加载器,用于加载 LDraw 格式的 3D 模型文件。LDraw 是一个开源的 LEGO 3D 模型格式,其中包含了各种 LEGO 零件的模型文件库。LDrawLoader 加载器让用户可以在 Three.js 项目中加载和显示 LDraw 模型,这样可以构建复杂的 LEGO 场景。
LUT3dlLoader 是 Three.js 中的一个加载器,用于加载 .3dl 格式的 3D 查找表(LUT)文件。LUT 是一种颜色调整工具,通常用于创建特定的色彩效果和电影风格的色调。在 Three.js 中,通过 LUT3dlLoader 加载的 LUT 文件可以应用到材质或渲染后期处理中,达到所需的视觉效果。

**所有加载方继继承 Load 基类 **

3DMLoader 有五个方法

    Rhino3dmLoader( manager : LoadingManager )
    manager — 加载器使用的 loadingManager。默认值为 [page:LoadingManager THREE.DefaultLoadingManager]。
    创建一个新的 Rhino3dmLoader。

方法

  • load ( url : String, onLoad : Function, onProgress : Function, [param:Function onError] ) : Object3D url — 包含 .3dm 文件路径/URL的字符串
    url — 包含 .3dm 文件路径/URL的字符串
    onLoad — 加载成功完成后调用的函数
    onProgress — (可选)加载过程中调用的函数。参数将是 XMLHttpRequest 实例,其中包含 .total 和 .[page:Integer loaded] 字节。如果服务器没有设置 Content-Length,.total 将为 0。
    onError — (可选)加载期间发生错误时调用的函数。该函数接收错误作为参数。
    开始从 url 加载并在解析得到 Object3d 后调用 onLoad 。
  • parse ( buffer : ArrayBuffer, onLoad : Function, onProgress : Function, onError : Function ) : Object3D
    buffer — 代表 Rhino File3dm 文档的 ArrayBuffer
    onLoad — 加载成功完成后调用的函数。
    onError — (可选)加载期间发生错误时调用的函数。该函数接收错误作为参数。
    解析 File3dm ArrayBuffer 并在得到 Object3d 后调用 onLoad。 请参阅 this example 以获取更多参考。
  • setLibraryPath ( value : String ) : this value — 包含 JS 和 WASM 库的文件夹的路径。
  • setWorkerLimit ( workerLimit : Number ) : this workerLimit - 要分配的最大 worker 数量。默认值为 4。 设置解码期间要使用的 [link:developer.mozilla.org/en-US/docs/… Web Workers] 的最大数量。如果 worker 还负责应用程序中的其他任务,则较低的限制可能更好。
  • dispose () : this 处理加载程序资源并释放内存。

DRACOLoader 有六个方法

方法

  • load ( url : String, onLoad : Function, onProgress : Function, onError : Function ) : undefined
    url — 一个.drc文件的路径或者网络地址。
    onLoad — 加载成功之后调用的函数。
    onProgress — (可选的) 正在加载时调用的函数。参数为XMLHttpRequest实例,包含.total和.loaded
    onError — (可选的)加载出现错误时调用的函数。该函将错误信息作为参数。
    开始加载解压缩的图形并调用onLoad函数。
  • setDecoderPath ( value : String ) : this value — 包含JS和WASM解压缩库的文件夹路径。
  • setDecoderConfig ( config : Object ) : this config.type - (可选的) "js"或"wasm"。 为解压缩库提供配置,在解压开始后不能修改。
  • setWorkerLimit ( workerLimit : Number ) : this workerLimit - 可以分配的最大线程数。默认值为4。 设置用于解码的Web Workers的最大值。如果线程也用于其他的任务,给定更小的限制会更合理。
  • preload () : this 如果还没加载完成,则请求解压库。
  • dispose () : this 处理解压资源和释放的内存。在处理后,解码器 不能重新加载.

FontLoader 有两个方法

    FontLoader( manager : LoadingManager )
    manager — 加载器所使用的loadingManager。默认值为THREE.DefaultLoadingManager.
    创建一个新的FontLoader.

方法

  • load ( url : String, onLoad : Function, onProgress : Function, onError : Function ) : undefined
    url — 文件的URL或者路径,也可以为 Data URI。
    onLoad — 将在加载完成时调用。参数是将要被加载的font。
    onProgress — 将在加载过程中调用。参数是包含total和loaded字节的XMLHttpRequest实例。如果server没有设置header的Content-Length,则total值为0。
    onError — 将在加载错误时调用。
    开始加载url,并将加载的font传递给onLoad。
  • parse ( json : Object ) : Font json — 用于解析的JSON>格式的对象。 解析一个JSON>格式的对象,并返回一个font。

GLTFLoader 有三个方法

方法

  • load ( url : String, onLoad : Function, onProgress : Function, onError : Function ) : undefined
    url — 包含有.gltf/.glb文件路径/URL的字符串。
    onLoad — 加载成功完成后将会被调用的函数。该函数接收parse所返回的已加载的JSON响应。
    onProgress — (可选)加载正在进行过程中会被调用的函数。其参数将会是XMLHttpRequest实例,包含有总字节数.total与已加载的字节数.loaded。
    onError — (可选)若在加载过程发生错误,将被调用的函数。该函数接收error来作为参数。
    开始从url加载,并使用解析过的响应内容调用回调函数。
  • setDRACOLoader ( dracoLoader : DRACOLoader ) : this dracoLoader — DRACOLoader的实例,用于解码使用KHR_draco_mesh_compression扩展压缩过的文件。 请
  • parse ( data : ArrayBuffer, path : String, onLoad : Function, onError : Function ) : undefined
    data — 需要解析的glTF文件,值为一个ArrayBufferJSON字符串。
    path — 用于找到后续glTF资源(如纹理和.bin数据文件)的基础路径。
    onLoad — 解析成功完成后将会被调用的函数。
    onError — (可选)若在解析过程发生错误,将被调用的函数。该函数接收error来作为参数。
    解析基于glTF的ArrayBufferJSON字符串,并在完成后触发onLoad回调。onLoad的参数将是一个包含有已加载部分的Object:.scene、 .scenes、 .cameras、 .animations 和 .asset

KTX2Loader 有五个方法

    KTX2Loader( manager : LoadingManager )
    manager — 供加载器使用的 LoadingManager 。默认值为 [page:LoadingManager THREE.DefaultLoadingManager]。
    创建一个新的 KTX2Loader

方法

  • load ( url : String, onLoad : Function, onProgress : Function, onError : Function ) : CompressedTexture
    url — 包含 .ktx2 文件路径/URL 的字符串。
    onLoad — 加载成功完成后调用的函数。
    onProgress — (可选)加载过程中调用的函数。参数将是 XMLHttpRequest 实例,其中包含 .total 和 .[page:Integer loaded] 字节。如果服务器没有设置 Content-Length,.total 将为 0。
    onError — (可选)加载期间发生错误时调用的函数。该函数接收错误作为参数。
    从 url 加载并在转码后 CompressedTexture 调用 onLoad 函数
  • detectSupport ( renderer : WebGLRenderer ) : this renderer — 渲染器实例。 检测可用压缩纹理格式的硬件支持,以确定转码器的输出格式。必须在加载纹理之前调用。
  • setTranscoderPath ( path : String ) : this path — 包含 WASM 转码器和 JS 包装器的文件夹路径。 WASM 转码器和 JS 包装器可从 [link:github.com/mrdoob/thre… examples/jsm/libs/basis] 目录中获取。
  • setWorkerLimit ( limit : Number ) : this limit — 最大 worker 数量。默认值为 '4'。 设置此实例要分配的最大 Web Worker 数量。
  • dispose () : this 处置加载器对象,取消分配创建的所有 Web Worker。

LDrawLoader 有八个方法

    LDrawLoader( manager : LoadingManager )
    manager — 加载器使用的 loadingManager 。默认值为 [page:LoadingManager THREE.DefaultLoadingManager]。
    创建一个新的 LDrawLoader

方法

  • load ( url : String, onLoad : Function, onProgress : Function, [param:Function onError] ) : undefined
    url — 包含 LDraw 文件的路径/URL 的字符串。
    onLoad — 加载成功完成后调用的函数。该函数接收从 parse 返回的加载的 JSON 响应。
    onProgress — (可选)加载过程中调用的函数。参数将是 XMLHttpRequest 实例,其中包含 .total 和 .[page:Integer loaded] 字节。如果服务器没有设置 Content-Length,.total 将为 0。
    onError — (可选)加载期间发生错误时调用的函数。该函数接收错误作为参数。
    开始从 url 加载并使用解析的响应内容调用回调函数。
  • setPartsLibraryPath ( path : String ) : this path — 用于加载引用零件的库零件文件的路径。这与 Loader.setPath 不同,后者指示加载主资源的路径。 必须在 .load 之前调用此方法,除非要加载的模型不引用库部件(通常它将是一个所有部件都打包在单个文件中的模型)。
  • setFileMap ( fileMap : Map ) : this map — 设置从 String 到 String 的映射,将引用的库文件名映射到新文件名。如果未指定 fileMap(默认值),则将通过子文件夹“parts”、“p”和“models”中的反复试验来访问库部件。
  • parse ( text : String, path : String, onLoad : Function, [param:Function onError] ) : undefined
    text — 要解析的 LDraw 资源,作为字符串。
    path — 从中查找其他引用的 LDraw 资源文件的基本路径。
    onLoad — 解析完成时调用的函数。
    将 LDraw 文件内容解析为字符串,并在完成时触发 onLoad 回调。onLoad 的参数将是一个 Group,其中包含 GroupMeshLineSegments 的层次结构(以及 .userData 字段中的其他零件数据)。
  • getMaterial ( colourCode : String ) : Material colourCode — 用于获取关联 Material 的颜色代码。
  • getMainMaterial () : String 返回主 LDraw 颜色的 Material。 对于已加载的 LDraw 资源,返回与主颜色代码关联的 Material。此方法可用于修改模型或暴露模型的零件的主要材质。 主要颜色代码是为 LDraw 零件着色的标准方法。三角形为“16”,边为“24”。通常,完整的模型不会暴露主要颜色(也就是说,没有零件在顶层使用代码“16”,因为它们被分配了其他特定颜色)另一方面,LDraw零件文件将暴露代码“16”可以着色,并且可以有附加的固定颜色。
  • getMainEdgeMaterial () : String 返回边缘主 LDraw 颜色的 Material。
  • preloadMaterials ( path : String ) : void path — LDraw 材料资源的路径。 此异步方法从单个 LDraw 文件预加载材质。在官方零件库中,有一个特殊文件,始终首先加载(LDConfig.ldr)并包含所有标准颜色代码。此方法旨在与未打包的文件一起使用,例如在预加载材料并按需加载部件的编辑器中。

LUT3dlLoader 有三个方法

    LUT3dlLoader( manager : LoadingManager )
    manager — 加载器所使用的loadingManager. 默认值为DefaultLoadingManager
    创建一个新的 LUT3dlLoader.

方法

  • load ( url : String, onLoad : Function, onProgress : Function, onError : Function ) : undefined
    url — .3dl格式的文件URL或者路径.
    onLoad — (可选) 加载成功完成后调用的函数。函数接收[page: function parse]方法的结果。
    onProgress — (可选) 在加载过程中调用的函数。参数将是XMLHttpRequest实例,它包含total和loaded字节。如果服务器没有设置Content-Length报头,total将为0。
    onError — (可选) 在加载过程中发生错误时调用的函数。函数接收错误作为参数。
    开始从url加载并返回加载的LUT
  • parse ( input : String ) : Object input — 3dl数据字符串。 解析3dl数据字符串并在完成时触发onLoad回调。onLoad的参数将是一个[page:Object对象],包含以下LUT数据:.size, .texture和.texture3d。
  • setType ( type : Number ) : this type - 纹理类型。详情请参阅[page:Textures纹理常量]页面。 设置所需的纹理类型。支持THREE.UnsignedByteType和THREE.FloatType。默认为THREE.UnsignedByteType.