Code Monkey home page Code Monkey logo

xeokit-gltf-to-xkt's Introduction

xeokit-gltf-to-xkt

npm version

Contents

Overview

xeokit-gltf-to-xkt converts models from glTF 2.0 to xeokit's optimized .xkt format.

An .xkt file is a binary file that contains a single 3D model with full-precision geometry, compressed using quantization, oct-encoding and zlib.

See the XKT Format specification for a detailed description of the .xkt format.

See Creating Files for Offline BIM for instructions on converting IFC, DAE and glTF models to .xkt.

Once you have .xkt files, you can load them into your viewer using XKTLoaderPlugin , which is the most efficient way to load high-detail models into xeokit.

Click on the screenshot below for a live demo of the XKTLoaderPlugin.

[Run this example]

Usage

  • Always use the latest version of xeokit/xeokit-sdk with each new version of xeokit-gltf-xkt.

CLI

Install locally or globally from npm.

$ npm i @xeokit/xeokit-gltf-to-xkt
$ ./gltf2xkt -s scene.gltf -o scene.xkt
$ gltf2xkt --help

Usage: gltf2xkt [options]

Options:
  -v, --version          output the version number
  -s, --source [file]    path to the source glTF file
  -o, --output [file]    path to the target xkt file
  -h, --help             output usage information

Programmatically

Since version 0.1.0, the gltf2xkt tool is a thin wrapper for xeokit-xkt-utils, which does the real conversion work. To convert files programmatically, we now use the xeokit-xkt-utils library directly.

const fs = require('fs').promises;

const {
    XKTModel,
    parseGLTFIntoXKTModel,
    writeXKTModelToArrayBuffer
} = require("@xeokit/xeokit-xkt-utils/dist/xeokit-xkt-utils.cjs.js");

async function main() {

    const gltfContent = await fs.readFile('../files/my_model.gltf');

    const gltfBasePath = getBasePath('../files/my_model.gltf'); // returns ../files/

    async function getAttachment(uri, parsingContext) {
        // This method we'll be called if the GLTF has an external resource. You may want to fetch them from 
        // disk or over network. uri is the URI defined in the GLTF. You can omit this callback if you know 
        // your gltf files don't use any eternal resource.
        return fs.readFile(gltfBasePath + uri);
    }

    const xktModel = new XKTModel();

    await parseGLTFIntoXKTModel(gltfContent, xktModel, getAttachment);

    xktModel.finalize();

    const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel);

    await fs.writeFile('../files/my_model.xkt', xktArrayBuffer);
}

main();

Development

// Clone the repo
$ git clone https://github.com/xeokit/xeokit-gltf-to-xkt
$ cd xeokit-gltf-to-xkt

// Install the dependencies
$ npm install

// Link for command line usage
$ npm link

// Use global symlink for testing
$ gltf2xkt -s /path/to/scene.gltf -o /path/to/scene.xkt

See .eslint and .prettierrc for code style guide.

Credits

xeokit-gltf-to-xkt's People

Contributors

amoki avatar dependabot[bot] avatar xeolabs avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.