Giter VIP home page Giter VIP logo

fbx-gltf-conv's Introduction

FBX-glTF-conv

This is a FBX to glTF file format converter.

Prerequisites

This project has been tested on:

  • Windows

  • macOS 10.13 or later

  • Ubuntu 22.04

    Ubuntu 20.04 is not supported.

How to use

You can find the latest release in releases page.

To convert, run the executable at command line:

> FBX-glTF-conv <source-FBX-file> --out <output-glTF-file>

There are some options, run the executable without any arguments:

> FBX-glTF-conv

This is a FBX to glTF file format converter.
Usage:
  FBX-glTF-conv [OPTION...] positional parameters

      --fbm-dir arg             The directory to store the embedded media.
      --out arg                 The output path to the .gltf or .glb file.
                                Defaults to
                                `<working-directory>/<FBX-filename-basename>
                                .gltf`
      --no-flip-v               Do not flip V texture coordinates.
      --unit-conversion arg     How to perform unit converseion.
                                  - `geometry-level` Do unit conversion at
                                geometry level.
                                  - `hierarchy-level` Do unit conversion at
                                hierarchy level.
                                  - `disabled` Disable unit conversion.
                                This may cause the generated glTF does't
                                conform to glTF specification. (default:
                                geometry-level)
      --no-texture-resolution   Do not resolve textures.
      --prefer-local-time-span  Prefer local time spans recorded in FBX
                                file for animation exporting. (default:
                                true)
      --animation-bake-rate arg
                                Animation bake rate(in FPS). (default: 30)
      --texture-search-locations arg
                                Texture search locations. These path shall
                                be absolute path or relative path from
                                input file's directory.
      --export-fbx-file-header-info
                                Export FBX file header info.
      --export-raw-materials    Export raw materials.
      --verbose                 Verbose output.
      --log-file arg            Specify the log file(logs are outputed as
                                JSON). If not specified, logs're printed to
                                console
      --image-path-mode arg     Specify the mode used to specify the image
                                path. Could be one of the following:
                                - absolute - Output the absolute path to
                                the path.
                                - relative - Output the relative path to
                                the path.
                                - prefer-relative - If the image is under
                                the the same or sub directory of glTF file,
                                output as relative. Otherwise output as
                                absolute.
                                - strip - Ingore all path information, only
                                output the file name.
                                - embedded - Embedded the image into Data
                                URI.
                                - copy - Copy the image to the output
                                directory and reference it with a relative
                                path.

Build

To build this tool, the followings are required:

This is a CMake project, just build it in normal CMake build process. However you need to indicate the FBXSDK's location and vcpkg toolchain file:

> cmake -DCMAKE_TOOLCHAIN_FILE="<path-to-vcpkg>/scripts/buildsystems/vcpkg.cmake" -DFbxSdkHome:STRING="<path-to-FBX-SDK-home>"

If problems encountered, you may file an issue or reference to the CI build script.

Why

This tool is essentially used as a part of the Cocos Creator. In former, Cocos Creator supports FBX file format through the excellent FBX2glTF.

But Cocos team has to find another approach because:

  • FBX2glTF store the glTF result files onto disk and Creator read the files. This is the only way that Creator can communicate with FBX2glTF. File system I/O is slow.
  • Author of FBX2glTF is tired.
  • FBX is complex and all exporters working for it are buggy. We usually need to fix strange issues. It's hard to sync fixes between Cocos and Facebook.

Features

  • ๐Ÿ—ธ Geometries

    • ๐Ÿ—ธ Meshes
  • ๐Ÿ—ธ Materials

    • ๐Ÿ—ธ Lambert and Phong
  • ๐Ÿ—ธ Textures and images

    • ๐Ÿ—ธ Image formats: JPEG, PNG
  • ๐Ÿ—ธ Skinning

    • โŒ› Cluster mode: additive
  • ๐Ÿ—ธ Blend shapes(Morph targets)

  • ๐Ÿ—ธ Animations

    • ๐Ÿ—ธ Node transform animations(Skeletal animations)

    • ๐Ÿ—ธ Blend shape animations(Morph animations)

  • ๐Ÿ—ธ Scene hierarchy

    • โŒ› FBX specific node inherit types: RrSs, Rrs
  • โŒ› Cameras

  • โŒ› Lights

๐Ÿ—ธ Supported โŒ› Not finished

Thanks

Again, the FBX is complex and specification-less. In development, we often reference from or are inspired from the following predecessors:

fbx-gltf-conv's People

Contributors

afeiya avatar minggo avatar shrinktofit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fbx-gltf-conv's Issues

Linux support

Could you please also make a linux release? I use Kubuntu 22.04 if it's matter.

Outputting a GLB file

The readme suggests that it is possible to write a .glb file instead of a .gltf, .bin and folder

--out arg            The output path to the .gltf or .glb file.
                     Defaults to "<working-directory>/<FBX-filename-basename>.gltf"

However, as far as I can tell there is no option to do so. When I give an output path with a .glb extension the utility still outputs a .gltf file, just with a different extension.
Is it possible to export .glb files with this program?

glTF Validate Error

When convert with this tool. It may give some errors when validate as below:

ERROR

  • GLB_CHUNK_LENGTH_UNALIGNED: Length of chunk is not aligned to 4-byte boundaries.
  • ACCESSOR_TOTAL_OFFSET_ALIGNMENT: Accessor's total byteOffset isn't a multiple of componentType length 4.

WARNING

  • NODE_SKINNED_MESH_NON_ROOT: Node with a skinned mesh is not root. Parent transforms will not affect a skinned mesh

INFO

  • UNUSED_OBJECT: This object may be unused.

HINT

  • BUFFER_VIEW_TARGET_MISSING: bufferView.target should be set for vertex or index data.

"--image-path-mode embedded" writes texture data into .glb file incorrectly

Hi

I have one slight issue. As Iโ€™ve stated in the title, when I try to create a .glb file with embedded textures, it seems like the texture write operation is not correct. Model Viewer applications refuse to open such files.

I also tried to render the model in Unity, the geometry was correct but the color information from textures were unrelated.

I am using the alpha.39 version.

Thanks for this very useful tool.

'FBX-glTF-conv' is not recognized as an internal or external command, operable program or batch file.

Hey! This project could potentially be a bit of a life saver for me... but I'm having some difficulties running it, any help would me greatly apprecitated

I've gone through the install steps with CMake and it seems to have all gone smoothly

-- Build files have been written to: C:/Users/adam_/FBX-glTF-conv

However when I go to run the command (I'm running it from the folder it was built to) I get the following message

C:\Users\adam_\FBX-glTF-conv>FBX-glTF-conv "C:\Users\adam_\FBX-glTF-conv\idle.fbx" --out "C:\Users\adam_\FBX-glTF-conv" 'FBX-glTF-conv' is not recognized as an internal or external command, operable program or batch file.

Is there a step after the CMake install command that I'm missing? I'm a complete newbie to CMake. Am I supposed to add a path variable for FBX-glTF-conv or do I have to do something with the built files CMake generates?

I've tried this on both windows & macOS and hit the same wall

Cheers!

License text not found in the repo

Hi, I found this tool very useful but I was not able to find license text in the repository.
What kind of open-source license do you plan to use for this tool?

Thanks,

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.