Git Product home page Git Product logo

fbx-conv's Introduction

fbx-conv

Build Status

Command line utility using the FBX SDK to convert FBX/Collada/Obj files to more runtime friendly formats. The FBX content is parsed into an in-memory datastructure. Pluggable writers then take this datastructure to generate the output. Send us a pull request if you want the writer for your engine/framework/app to be integrated. We'll build the converter for Windows, Linux and Mac.

The FBX parser is largely based on GamePlay SDK's encoder. We'll try to back-port any bug fixes or improvements.

Hangout notes https://docs.google.com/document/d/1nz-RexbymNtA4pW1B5tXays0tjByBvO8BJSKrWeU69g/edit#

Command-line Usage

  • Windows - fbx-conv-win32.exe [options] <input> [<output>]
  • Linux - fbx-conv-lin64 [options] <input> [<output>]
  • Mac - fbx-conv-mac [options] <input> [<output>]

Options/flags

  • -? -Display help information.
  • -o <type> -Set the type of the output file to <type> : FBX, G3DJ (json) or G3DB (binary).
  • -f -Flip the V texture coordinates.
  • -p -Pack vertex colors to one float.
  • -m <size> -The maximum amount of vertices or indices a mesh may contain (default: 32k)
  • -b <size> -The maximum amount of bones a nodepart can contain (default: 12)
  • -w <size> -The maximum amount of bone weights per vertex (default: 4)
  • -v -Verbose: print additional progress information

Example

fbx-conv-win32.exe -f -v myModel.fbx convertedModel.g3db

Precompiled Binaries

These binaries are recompiled on any changes in the Git repository, via the travis build

On Windows you'll need to install VC 2015 Redistributable Package https://www.microsoft.com/en-us/download/details.aspx?id=48145

On Linux and Mac, we have to link to the dynamic libraries of the FBX SDK (libfbxsdk.so and libfbxsdk.dylib). We recommend copying libfbxsdk.so to /usr/lib on Linux. Otherwise you can use LD_LIBRARY_PATH and set it to the directory you put the .so file.

There's also a Qt GUI wrapper and Java GUI around it.

Building

You'll need premake and an installation of the FBX SDK 2019.0. Once installed/downloaded, set the FBX_SDK_ROOT to the directory where you installed the FBX SDK. Then run one of the generate_XXX scripts. These will generate a Visual Studio/XCode project, or a Makefile.

On Linux and Mac, you can follow Travis build steps in order to build and run it.

fbx-conv's People

Contributors

akalisingh avatar alex55i avatar badlogic avatar dc740 avatar dzikoysk avatar gered avatar jwisniewski avatar maximtwo avatar mgsx-dev avatar paulados avatar rjuszczyk avatar stbachmann avatar tom-ski avatar traviswimer avatar xoppa 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  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  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

fbx-conv's Issues

I'm getting an error when converting my FBX file. Not much information to give

I'm getting an error when converting my FBX file. Not much information to give

Loading source file...
Triangulating FbxLine geometry

I get the window fbx-conv-win32.exe has stopped working dialog popping up.

The FBX file is converted from 3ds Max 2012.

I can PM the link of the file to the developer who is handling this issue.

Issue in animation optimization leading to problems with transformations

Introduction. The described below is connected to combination of logic of BaseAnimationController and fbx-converter. So one have to decide which part would be fixed. Currently I've made a quick fix of fbx-conv part to solve the issue.

In complex skinning animation transition could lead to a very strange result. For example there are two animations where the hero stands just close (but different) poses. In one animation it move hands, in another - head. During transition (as it was in my case) the leg start to move to the side during the transition time and then immediately returns to the correct position exactly when the transitions was finished.

BaseAnimationController has the method:

/** Apply two animations, blending the second onto to first using weight. */
protected void applyAnimations(final Animation anim1, final float time1, final Animation anim2, final float time2, final float weight) {
    if (anim2 == null || weight == 0.f)
        applyAnimation(anim1, time1);
    else if (anim1 == null || weight == 1.f)
        applyAnimation(anim2, time2);
    else if (applying)
        throw new GdxRuntimeException("Call end() first");
    else {
        begin();
        apply(anim1, time1, 1.f);
        apply(anim2, time2, weight);
        end();
    }
}

where in the last lines we apply the previous animation with weight 1, and then directly apply new (current) animation with specific weight. Under the hood the method make linear interpolation of everything like prev_(1-weight) + curr_weight.

Keep in mind, that we first apply previous animation at the full weight, and only then reduce it weight to (1-weight) when applying the current animation. So, if some bones will not be present in the current animation, but will present in prev animation we will have very strange results (like described in the beginning).

What's the deal? We could just add the correct initial values of all bones to the first animation key in Blender (or whatever) to all animations. Then all animations will have exactly the same amount of bones in use.

This it true, but fbx-conv bring another surprise. In FbxConverter.h, line 633 we have

// Only add keyframes really needed
addKeyframes(nodeAnim, frames);
if (nodeAnim->rotate || nodeAnim->scale || nodeAnim->translate)
animation->nodeAnimations.push_back(nodeAnim);
else
delete nodeAnim;

So, if the animation does not use the bone, and if the initial bone state is zero (no rotation, transition, etc.) it will not be included in the g3db file. So, disregarding we have added all initial bone states in Blender, we will have very funny transitions.

It take some time for me to understand the problem. I have fixed it by removing this check in fbx-conv and leaving only one line:

animation->nodeAnimations.push_back(nodeAnim);

disregarding if the bone have some transformation.

Another, probably more proper solution, will be initially apply prev and curr animation with (1-weight) and (weight) coefficients. Or apply some "zero" bone to the transformations, which are present in prev, but absent in curr animations. Just to scale them down to (1-weight).

fbx-conv-lin64 FbxMesh geometry

The latest version of fbx-conv-lin64 is correctly creating the parts under each node. Thank you xoppa your work is greatly appreciated.

There is one more issue that seems to be occurring. The models seem to be triangulating the mesh geometry for every other mesh.

....
WARNING:  [Box_One] Node uses RrSs mode, transformation might be incorrect
STATUS:   [shape(Box_Four)] Triangulating FbxMesh geometry
STATUS:   [shape(Box_Two)] Triangulating FbxMesh geometry
VERBOSE:  [shape(Box_Three)] polygons: 6 (18 indices), control points: 8
VERBOSE:  [shape(Box_One)] polygons: 6 (18 indices), control points: 8
VERBOSE:  [shape(Box_Four)] polygons: 12 (36 indices), control points: 8
VERBOSE:  [shape(Box_Two)] polygons: 12 (36 indices), control points: 8
STATUS:   Converting source file
....

These are box shapes, so the polygons count should be 12 and indices 36. Here is the FBX file i am using:
FBX File

Linux Segfault

Built from 2579f61 w/ debug config in order to get a proper backtrace from this:

(gdb) r
Starting program: /home/andre/fbxconv/fbx-conv/fbx-conv 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x0000000000407d40 in fbxconv::log::Log::msg (this=0x7fffffffde20, code=2) at ../../src/log/log.h:59
59              return (*messages)[code];
(gdb) bt full
#0  0x0000000000407d40 in fbxconv::log::Log::msg (this=0x7fffffffde20, code=2) at ../../src/log/log.h:59
No locals.
#1  0x0000000000407d6a in fbxconv::log::Log::vformat (this=0x7fffffffde20, code=2, vl=0x7fffffffdce8) at ../../src/log/log.h:64
        buff = '\000' <repeats 1023 times>
#2  0x0000000000407f77 in fbxconv::log::Log::vlog (this=0x7fffffffde20, type=@0x43f234: 8, code=@0x7fffffffdcd4: 2, vl=0x7fffffffdce8) at ../../src/log/log.h:116
No locals.
#3  0x0000000000408648 in fbxconv::log::Log::info (this=0x7fffffffde20, code=2) at ../../src/log/log.h:156
        vl = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 0x7fffffffddc0, reg_save_area = 0x7fffffffdd00}}
#4  0x0000000000416406 in fbxconv::FbxConv::FbxConv (this=0x7fffffffde10, log=0x7fffffffde20) at ../../src/FbxConv.h:60
No locals.
#5  0x0000000000406d8e in process (argc=1, argv=0x7fffffffdf68) at ../../src/main.cpp:45
        log = {_vptr.Log = 0x443230 <vtable for fbxconv::log::Log+16>, static LOG_STATUS = 1, static LOG_PROGRESS = 2, static LOG_DEBUG = 4, static LOG_INFO = 8, 
          static LOG_VERBOSE = 16, static LOG_WARNING = 32, static LOG_ERROR = 64, filter = -1, messages = @0x7fffffffde10}
        conv = {log = 0x7fffffffde20}
#6  0x0000000000406e20 in main (argc=1, argv=0x7fffffffdf68) at ../../src/main.cpp:55
        result = 0

Segmentation Fault and Model not Supported

When using a release version it throws Segmentation Fault when converting a file.
When using a debug version it converts fine but the problem is in loading it in libgdx.
I'm using Linux Mint 15 32bit.

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load dependencies of asset: data/test.g3db
at com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:517)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:351)
at com.marku.wizduel.LoadScreen.render(LoadScreen.java:37)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load dependencies of asset: data/test.g3db
at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:119)
at com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:89)
at com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:454)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:349)
... 4 more
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Model version not supported
at com.badlogic.gdx.utils.async.AsyncResult.get(AsyncResult.java:46)
at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:117)
... 7 more
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Model version not supported
at com.badlogic.gdx.graphics.g3d.loader.G3dModelLoader.parseModel(G3dModelLoader.java:74)
at com.badlogic.gdx.graphics.g3d.loader.G3dModelLoader.loadModelData(G3dModelLoader.java:64)
at com.badlogic.gdx.assets.loaders.ModelLoader.getDependencies(ModelLoader.java:74)
at com.badlogic.gdx.assets.AssetLoadingTask.call(AssetLoadingTask.java:64)
at com.badlogic.gdx.assets.AssetLoadingTask.call(AssetLoadingTask.java:34)
at com.badlogic.gdx.utils.async.AsyncExecutor$2.call(AsyncExecutor.java:65)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)

Problems in converting from fbx to G3dj

Hey guys I'm a beginner at libgdx and I'm having an annoying problem.
I'm developing a project that needs to import a building, which fbx file is very big, but the problem is that when I try to convert the fbx, it keeps always having errors saying "Skipping geometry without material", because the model doesn't have materials, I know that. And if I use a smaller model it gives a lot o warnings because of the number of vertices, and when i run the app it doesn't show the model, it recognises that it exists, the number of nodes, meshes but the materials stays as null as expected, shows only a black screen.
How can i convert the model? Or the model really needs to have materials?

The models are here:https://drive.google.com/folderview?id=0B__hwerDSna6UlAtMmxWV3hoQjg&usp=sharing

Considerations when exporting to FBX for using in fbx-conv and how to get more debug information

Hi,

First of all, congratulations for your work and the converter, I think it is great.

After that, I have to say that I am new to libgdx and, of course, using fbx-conv. In my first steps I have converted some sample models without any problems. However, just now I am trying to convert to g3dj/g3db a FBX model made with 3ds max (I did not make the model, the designer send it to me) and I am having an error and a pop up dialog window error just saying:
"fbx-conv-win32.exe has encountered a problem and needs to close"

NOTE: Full output is at the end if the issue.

I have tell the designer the considerations for the fbx model that I have seen here (https://github.com/libgdx/libgdx/wiki/Importing-Blender-models-in-LibGDX), although this considerations are for blender. Considerations I have tell him when exporting to FBX are:

  • Select all and only those options (e.g. nodes and animations) you want to actually include. Don't include your camera, lights, etc.
  • Set key frame interpolation to linear (from the default bezier interpolation) for avoiding big size file.

However, I get the above error, and none information about what the problem could be. So, as developer, how could I get more information about the problem for telling to the designer? I do not know if the problem is that he did not follow the considerations, a program problem, etc.

I also have seen in this issue (#38) that there is a file size consideration, so that the model should not exceed, but I have not found this size limit in the information. Is there a real size limit? In that case, which one?

On the other part, from this other issue (#39) I understand that it is not recommended to use any fbx extension, but only the default autodesk fbx converter without any "extra" for avoiding possible errors.

There is any other consideration to take into account? I think it would be interesting to join all this information, and, if possible, to add also restrictions for 3ds max and maya users for taking into account when exporting the fbx models.

On the other hand, I think it could be useful also to have more information about the errors so that I could tell the designer to reduce the number of vertices, or to avoid such an extension, or whatever, I do not know if it could be possible.

Thank you very much for your work and time.


Output when executing fbx-conv:

C:\fbx-conv>fbx-conv-win32.exe -v -f fbxtest.fbx test.g3dj
INFO: FBX to G3Dx converter, version 0.01.0000 x32 (pre-release)
STATUS: Loading source file
PROGRESS: Import FBX 1.09%
PROGRESS: Import FBX 2.18%
PROGRESS: Import FBX 3.27%
PROGRESS: Import FBX 4.36%
PROGRESS: Import FBX 5.45%
PROGRESS: Import FBX 6.54% Bip001 Spine1
PROGRESS: Import FBX 7.63% Bip001 Ponytail11
PROGRESS: Import FBX 8.71% Bip001 L UpperArm
PROGRESS: Import FBX 9.80% Bip001 R Forearm
PROGRESS: Import FBX 10.89% Bip001 L Toe0
PROGRESS: Import FBX 11.98% Material #0
PROGRESS: Import FBX 13.07% Material #5
PROGRESS: Import FBX 14.16% Boots
PROGRESS: Import FBX 15.25% Map #6
PROGRESS: Import FBX 16.34% Map #5
PROGRESS: Import FBX 17.43% Take 001
PROGRESS: Import FBX 18.52%
PROGRESS: Import FBX 19.61% left_eye_closed
PROGRESS: Import FBX 20.70%
PROGRESS: Import FBX 21.79%
PROGRESS: Import FBX 22.88%
PROGRESS: Import FBX 23.97%
PROGRESS: Import FBX 25.05%
PROGRESS: Import FBX 26.14%
PROGRESS: Import FBX 27.23%
PROGRESS: Import FBX 28.32%
PROGRESS: Import FBX 29.41%
PROGRESS: Import FBX 30.50%
PROGRESS: Import FBX 31.59%
PROGRESS: Import FBX 32.68%
PROGRESS: Import FBX 33.77%
PROGRESS: Import FBX 34.86%
PROGRESS: Import FBX 35.95%
PROGRESS: Import FBX 37.04%
PROGRESS: Import FBX 38.13%
PROGRESS: Import FBX 39.22%
PROGRESS: Import FBX 40.31%
PROGRESS: Import FBX 41.39%
PROGRESS: Import FBX 42.48%
PROGRESS: Import FBX 43.57%
PROGRESS: Import FBX 44.66%
PROGRESS: Import FBX 45.75%
PROGRESS: Import FBX 46.84%
PROGRESS: Import FBX 47.93%
PROGRESS: Import FBX 49.02%
PROGRESS: Import FBX 50.11%
PROGRESS: Import FBX 51.20%
PROGRESS: Import FBX 52.29%
PROGRESS: Import FBX 53.38%
PROGRESS: Import FBX 54.47%
PROGRESS: Import FBX 55.56%
PROGRESS: Import FBX 56.64%
PROGRESS: Import FBX 57.73%
PROGRESS: Import FBX 58.82%
PROGRESS: Import FBX 59.91%
PROGRESS: Import FBX 61.00%
PROGRESS: Import FBX 62.09%
PROGRESS: Import FBX 63.18%
PROGRESS: Import FBX 64.27%
PROGRESS: Import FBX 65.36%
PROGRESS: Import FBX 66.45%
PROGRESS: Import FBX 67.54%
PROGRESS: Import FBX 68.63%
PROGRESS: Import FBX 69.72%
PROGRESS: Import FBX 70.81%
PROGRESS: Import FBX 71.90%
PROGRESS: Import FBX 72.98%
PROGRESS: Import FBX 74.07%
PROGRESS: Import FBX 75.16% R
PROGRESS: Import FBX 76.25% T
PROGRESS: Import FBX 77.34% S
PROGRESS: Import FBX 78.43% R
PROGRESS: Import FBX 79.52% T
PROGRESS: Import FBX 80.61% S
PROGRESS: Import FBX 81.70% R
PROGRESS: Import FBX 82.79% T
PROGRESS: Import FBX 83.88% S
PROGRESS: Import FBX 84.97% R
PROGRESS: Import FBX 86.06% T
PROGRESS: Import FBX 87.15% S
PROGRESS: Import FBX 88.24% R
PROGRESS: Import FBX 89.32% T
PROGRESS: Import FBX 90.41% S
PROGRESS: Import FBX 91.50% R
PROGRESS: Import FBX 92.59%
PROGRESS: Import FBX 93.68%
PROGRESS: Import FBX 94.77%
PROGRESS: Import FBX 95.86%
PROGRESS: Import FBX 96.95%
PROGRESS: Import FBX 98.04%
PROGRESS: Import FBX 99.13% open_mouth
PROGRESS: Import FBX 100.00%

STATUS: [shape(Body)] Triangulating FbxMesh geometry
INFO: [shape(Body)] polygons: 3200 (9600 indices), control points: 1626
STATUS: [shape(Hat)] Triangulating FbxMesh geometry
INFO: [shape(Hat)] polygons: 766 (2298 indices), control points: 416
INFO: [shape(Left Eye)] polygons: 728 (2184 indices), control points: 366
INFO: [shape(right Eye)] polygons: 728 (2184 indices), control points: 366

empty indices caused whole game crash issue

Hi,

I found if there is empty indeces node in in my g3db file, it will cause the whole game to be crashed. Not sure if it is possbile to just spit some warning info, and take the empty node as "nothing" and continue?

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Not enough indices
at com.badlogic.gdx.graphics.Mesh.extendBoundingBox(Mesh.java:659)
at com.badlogic.gdx.graphics.g3d.model.Node.extendBoundingBox(Node.java:126)
at com.badlogic.gdx.graphics.g3d.model.Node.extendBoundingBox(Node.java:114)
at com.badlogic.gdx.graphics.g3d.ModelInstance.extendBoundingBox(ModelInstance.java:394)
at com.badlogic.gdx.graphics.g3d.ModelInstance.calculateBoundingBox(ModelInstance.java:384)

Convert OBJ with texture generates G3DJ with opacity 0

When I use fbx-conv 0.01.0000 x64 to convert a OBJ into G3DJ the texture material gets opacity value 0 so the model won't be visible (0 for transparent, right?).

If I change the opacity value in G3DJ file to 1 the model becomes visible.

Invalid texture coordinates

When converting some FBX models the texture coordinates seems to be incorrect when loading the .g3dj file with libgdx 0.9.9. One example is the zombie included in the Autodesk FBXConverter 2013.3 where the coordinates for the Zombie_Diffuse.png texture are incorrect.

convert g3dj to g3db?

Sometimes it is very useful to convert g3dj to g3db, not sure if could add such feature?

What is license for this project?

I looked for file with project license, also into sources for main application, but did not found any information on it (if there is some information on it already, I'd be happy to get some pointer to it, because I wasn't able to find it).

I'd like to package this to be available to users of Linux distribution I use, and specifying valid license in package is requirement here.

It does not work on Ubuntu 14.04

fbx-conv-lin64 does not work on Ubuntu 14.04 (x64):

I have an error:

fbx-conv-lin64: error while loading shared libraries: libfbxsdk.so: cannot open shared object file: No such file or directory

No documentation about "BLENDINDICES" attribute

Looking into the fbx-conv code and their g3dj example files I found an attribute called BLENDINDICES, but no documentation about it and how to use this kind of attribute. Maybe is not yet documented this attribute?

Btw I would be happy to collaborate to help to improve these project. Is there any place to see which issues are pending to solve, or what are the next thing to do in this project?

fbx-conv generating G3DJ file that doesn't follow specification

I'm just reading the G3DJ format on the specification page and something caught my attention.

I converted a file from FBX to G3DJ and the following section was on the file

...
"parts": [
{
"meshpartid": "shape1_part1",
"materialid": "unnamed",
"bones": [
{
"node": "bone_1",
"translation": [ 0.988038, 0.000000, 0.263477, 0.000000],
"rotation": [ 0.500000, -0.500000, 0.500000, 0.500000],
"scale": [ 1.000000, 1.000000, 1.000000, 0.000000]
},
...

but reading the 0.1 specification (and also 0.2) I was led to believe the "bones" section is only a list of nodeid's, the actual rotation, location and scale should be on the node referenced by the bones section (and indeed it is, and it have different values listed for those three attributes).

:
{
"meshpartid": <meshpartid>,
"materialid": <materialid>
(, "bones": [(<nodeid> (, <nodeid>))?])?
(, "uvMapping": [(<uvmapping> (, <uvmapping>)
)?])?
}

The resulting file does open but doesn't animate (I can't right now attest that it "should" animate, as my code can be wrong).

Anyway, here are the original FBX and G3DJ files for reference.

FBX: http://pastebin.com/KAyTEFGa
G3DJ: http://pastebin.com/Yras5nST

conversion issues

Testing a few different input files and haven't been able to convert the following files:

Chair.FBX
WARNING: Mesh contains more indices (50448) than the specified maximum (32767)
WARNING: [Leathero2] Material doesn't extend FbxSurfaceLambert, replaced with RED diffuse

Eames.FBX
WARNING: Mesh contains more indices (33792) than the specified maximum (32767)
WARNING: [Wood] Material doesn't extend FbxSurfaceLambert, replaced with RED diffuse

Hut.FBX
WARNING: [Mat_01] Material doesn't extend FbxSurfaceLambert, replaced with RED diffuse

Lightbulb.FBX
WARNING: [Bulb] Node uses RrSs mode, transformation might be incorrect
WARNING: [Bulb] Skipping empty node part, material: 'Black_Shiny.001'

Srt.FBX
WARNING: Mesh contains more indices (260352) than the specified maximum (32767)

Hut.FBX
WARNING: [Mat_01] Material doesn't extend FbxSurfaceLambert, replaced with RED diffuse

I'm running Debian 7 & fbx-conv version 0.01.0037 x64 (pre-release) using a precompiled binary;
Here is a link to an archive with the objects, and their respective command output's in text format.
https://www.dropbox.com/s/qsrdbhhiweqa2eh/fbxconv.rar?dl=0
Any help is much appreciated!

Converter often drops last animation frame.

Often converter drops the last animation frame which leads to animation jitter on looping. The reason is "for" loop over float variable and rounding imperfectness (Fbx.Converter.h, line 612) at the last loop iteration.

Somehow I can not make a pull request. The fast solution is to: replace Fbx.Converter.h, line 612 from:
for (float time = (_itr).second.start; time <= (_itr).second.stop; time += stepSize) {
to:
const float last = (_itr).second.stop + stepSize * 0.5f;
for (float time = (_itr).second.start; time <= last; time += stepSize) {

Afterwards it works.

Support for morph targets / blend shapes in FBX format

There are some kinds of animations that cannot be easily replicated with skeletal animations. One such example would be an exploding object, where multiple faces are moving in different directions at once. Some facial expressions are also much easier to create using morph targets.

Since FBX does support morph targets / blend shapes / shape keys, It would be great if support could be added to the fbx-conv tool, with the ultimate goal of also adding support in libgdx core.

Problems building

I'm having problems building it. I've downloaded FBX SDK 2014 and precompiled binaries. Then, I've opened premake.lua and changed "FBX_SDK_ROOT" for "C:\Program Files\Autodesk\FBX\FBX SDK\2014.1". Finally, double click on generate_vs2010 (i'm usign windows) but it show me the following message

"'premake4' not found in your path. Premake can be downloaded from http://industriousone.com/premake/"

What am I doing wrong?

Textures in FBX Version 7.1 and above

I have a model exported in Versions 7.1/7.2/7.3 and 7.4 which I converted to g3dx format. I loose all textures while converting. The materials section does not contain a textures array although textures get extracted from the FBX file. If I preview the file in FBX Converter from autodesk it is displayed correct.
Only if I use FBX Version 6 the texture array appears in the g3dx file. So I assume the converter has an issue with version 7 of FBX file format extracting them but not referencing it in the g3dx file.

The model im using has gone through ArchiCAD->Cinema4D->Libgdx.

G3DJ - Tag original bones?

Some bones that were clearly bones in the original model are not tagged as such on the exported G3DJ. Even if they contain no skinning or animation, they are still helpful as visualization or attach points and force the importer to do guesswork that is not always possible either. Would it be possible somehow to include back this information in the converter?

Models loading but not showing

I've tried with the latest precompiled version on Mac and Windows, and all the models I've tried are loading properly, but not showing at all. Tried compiling it myself on Mac and got the same problem.

Tried with the same models with an old fbx-conv binary I had around, and it worked properly, so something must be wrong with the code and the latest version.

Tried everything with LibGX 1.4.1.

Documentation

Sorry, I don't know where to ask this question, in the wiki section of fbx-conv there is no documentation, and I don't know exactly how to work with it.
I only know that I should call "fbx-conv" command in command line, for example:
fbx-conv ship.obj
But where should I enter this command? There is no exe file in source.
Any help would be much appreciated.

FBX 7.4 incorrect orientation

When exporting my .fbx from Blender, if I choose Version 7.4 the resulting model would always be oriented face down to the ground. The axis settings in Blender have no effect. (The scaling also seems to be a little different from Blender settings, but I'm not sure).

I guess I could rotate the model and scale in-game, but it would be great if this were corrected.
http://www.filedropper.com/woodtower

Blender FBX problem

After conversion of FBX from Blender bone lists of some animations appear to be empty:
...
{
"id": "idle",
"bones": []
},
...

or contain only keyframes for keytime 0.

That didn't happen with couple of months older precompiled binary version.

Material count crash

Hi,
I'm trying FBX conv on FBX models from the www.
Some models are good, some other crash during conversion and I don't figure out why exactly.
I get this file for example : http://tf3dm.com/3d-model/modern-desk-34387.html to convert from FBX, and I got an error in the FbxConverter.h in prefetchMeshes() line 457 :

if (info->elementMaterialCount <= 0) {
log->error(log::eSourceConvertFbxNoMaterial, getGeometryName(geometry));
scene = 0;
break;
}

It seems that the material count is 0, but I don't get why.
I tried to debug it by myself but without any success... sorry for that.

If I can help... let me know !

Thanks.

Unable to build fbx-conv on Linux (x86_64)

I tried to locate the prebuilt binaries for linux but could only find what seemed to be for Mac OSX. So I tried to build the project myself on Linux (LinuxMint 16 x86_64) but received the following error:

Linking fbx-conv
../../../../Applications/fbx-sdk/lib/gcc4/x64/debug/libfbxsdk.so: undefined reference to `dlopen'
../../../../Applications/fbx-sdk/lib/gcc4/x64/debug/libfbxsdk.so: undefined reference to `dlclose'
../../../../Applications/fbx-sdk/lib/gcc4/x64/debug/libfbxsdk.so: undefined reference to `dlsym'
collect2: error: ld returned 1 exit status

After searching around, I found this post on stackoverflow which suggests it's gcc's fault.

I edited the build/gmake/fbx-conv.make file and appended the flag -Wl,--no-as-needed flag to the LDFLAGS variable which allowed me to complete the build. The problem is the resulting executable segfaults.

Mesh contains more indices (***) than the specified maximum (***)

Hi I've got the problem.
I use libgdx and the newest version of fbx-conv to prepare g3db models.
My model's got more indieces
[quote]WARNING: Mesh contains more indices (397440) than the specified maximum (32767)[/quote]
and it looks bad in the game.
I studied fbx-conv code and saw that max value of indieces can change. I don't know why is it that small number.
Anyway could you change it in fbx-conv program or just advice me what to do with that problem?
I tried to add obj model but it's not working good after all.

it's got a blue mark. It's wrong
https://dl.dropboxusercontent.com/u/52804743/model%20problems/1.PNG
the same thing here:
https://dl.dropboxusercontent.com/u/52804743/model%20problems/3.PNG
https://dl.dropboxusercontent.com/u/52804743/model%20problems/4.PNG
correct cabin
https://dl.dropboxusercontent.com/u/52804743/model%20problems/5.PNG
and wrong (it's the same part in blender)
https://dl.dropboxusercontent.com/u/52804743/model%20problems/6.PNG

Crashes when trying to convert Autodesk FBX Samples

Converting Autodesk FBX Zombie.fbx, it converts fine. Converting Roger_CharacterFace_Shape.fbx it crashes. When trying to load Zombie.fbx I get the following error:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load dependencies of asset: data/test/Zombie_Normals.tga
    at com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:517)
    at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:351)
    at com.complexsive.biocide.viewer.core.BiocideViewer.render(BiocideViewer.java:96)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load dependencies of asset: data/test/Zombie_Normals.tga
    at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:119)
    at com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:89)
    at com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:454)
    at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:349)
    ... 3 more
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: data/test/Zombie_Normals.tga
    at com.badlogic.gdx.utils.async.AsyncResult.get(AsyncResult.java:46)
    at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:117)
    ... 6 more
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: data/test/Zombie_Normals.tga
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
    at com.badlogic.gdx.assets.loaders.TextureLoader.loadAsync(TextureLoader.java:72)
    at com.badlogic.gdx.assets.loaders.TextureLoader.loadAsync(TextureLoader.java:41)
    at com.badlogic.gdx.assets.AssetLoadingTask.call(AssetLoadingTask.java:69)
    at com.badlogic.gdx.assets.AssetLoadingTask.call(AssetLoadingTask.java:34)
    at com.badlogic.gdx.utils.async.AsyncExecutor$2.call(AsyncExecutor.java:65)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: data\test\Zombie_Normals.tga (Internal)
    at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:133)
    at com.badlogic.gdx.files.FileHandle.length(FileHandle.java:563)
    at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:218)
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)
    ... 9 more

Zombie_Normals.tga was not generated in the fbm folder.

Let me know if you need more info.
Jeff

Black diffuse color being ignored.

Hi, I am usign fbx-conv to convert some .obj file. There is a material in this file which has black diffuse color (0,0,0) and some shininess and specular color. But the black diffuse color is not exported into G3DJ file (everything else is there, just the diffuse color is missing). Libgdx renders this as white by default, so that is really not desirable.
If I change the color to 0.001,0.001,0.001, it exports fine and renders good.

Max vertices error

After running:

fbx-conv -p -v "path to file"

FBX-conv gives me a warning that there are too many mesh vertices. So I try setting the maximum allowed indices with this command:

fbx-conv -p -v -m 64k "path to file"

It prints the warning again and tells me the max is now "64." If FBX-conv does not accept *k numbers then please do not put them in the help printout. So I ran:

fbx-conv -p -v -m 64000 "path to file"

Now what does it do, it says "Error, maximum vertex count must be between 0 and 32k"
This is annoying, as now I have to go back into my model editor and split up the node.

So in conclusion, please make FBX-conv accept *k numbers, and please make it accept larger vertex counts if possible.

non weight painted meshes dont show up on rigged models

I'm not sure if this is an issue with the fbx format or with fbx-conv....

using blender, If you create a rigged model, and dont weight paint some of the meshes on to a deform bone, then export to fbx and convert to g3db.. the unpainted meshes are invisible.

I could see this being useful when creating organic characters and unweighted meshes are probably a mistake and would show up weirdly. But in my case I'm making a spike trap mechanism and I've purposefully left the unanimated portion of the model unpainted

Issues executing from apache2/php

Hey guys! little confused here.
working on a project where I execute from apache/php

exec("/opt/fbxconv/fbx-conv-lin64 -o G3DB '/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbx' '/var/www/#censor#/public_html/#censor#/assets/FBXUploads/FBXUpload_546/mytest.g3db'");

I've tried executing the same command from the terminal with these results:

INFO: FBX to G3Dx converter, version 0.01.0037 x64 (pre-release)
STATUS: Loading source file
WARNING: [Cube] Node uses RrSs mode, transformation might be incorrect
STATUS: [Cube] Triangulating FbxMesh geometry
Segmentation fault

Below is an strace of the application! any help is much appreciated!

execve("/opt/fbxconv/fbx-conv-lin64", ["/opt/fbxconv/fbx-conv-lin64", "/var/www/#censor#/public_ht"..., "/var/www/#censor#/public_ht"...], [/* 15 vars _/]) = 0
brk(0) = 0x1dc6000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5e47000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=19589, ...}) = 0
mmap(NULL, 19589, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f30d5e42000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libfbxsdk.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20l\24\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0444, st_size=9973618, ...}) = 0
mmap(NULL, 10319400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f30d5251000
mprotect(0x7f30d5a01000, 2097152, PROT_NONE) = 0
mmap(0x7f30d5c01000, 147456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7b0000) = 0x7f30d5c01000
mmap(0x7f30d5c25000, 13864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f30d5c25000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14664, ...}) = 0
mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f30d504d000
mprotect(0x7f30d5050000, 2093056, PROT_NONE) = 0
mmap(0x7f30d524f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f30d524f000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\6\6\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=991600, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5e41000
mmap(NULL, 3171520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f30d4d46000
mprotect(0x7f30d4e2e000, 2097152, PROT_NONE) = 0
mmap(0x7f30d502e000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x7f30d502e000
mmap(0x7f30d5038000, 83136, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f30d5038000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p.\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=89056, ...}) = 0
mmap(NULL, 2184824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f30d4b30000
mprotect(0x7f30d4b45000, 2097152, PROT_NONE) = 0
mmap(0x7f30d4d45000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7f30d4d45000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\34\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1729984, ...}) = 0
mmap(NULL, 3836448, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f30d4787000
mprotect(0x7f30d4926000, 2097152, PROT_NONE) = 0
mmap(0x7f30d4b26000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19f000) = 0x7f30d4b26000
mmap(0x7f30d4b2c000, 14880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f30d4b2c000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200U\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1051056, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5e40000
mmap(NULL, 3146072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f30d4486000
mprotect(0x7f30d4586000, 2093056, PROT_NONE) = 0
mmap(0x7f30d4785000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xff000) = 0x7f30d4785000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20o\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=137440, ...}) = 0
mmap(NULL, 2213008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f30d4269000
mprotect(0x7f30d4281000, 2093056, PROT_NONE) = 0
mmap(0x7f30d4480000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f30d4480000
mmap(0x7f30d4482000, 13456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f30d4482000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5e3f000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5e3d000
arch_prctl(ARCH_SET_FS, 0x7f30d5e3d740) = 0
mprotect(0x7f30d4b26000, 16384, PROT_READ) = 0
mprotect(0x7f30d4480000, 4096, PROT_READ) = 0
mprotect(0x7f30d4785000, 4096, PROT_READ) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5e3c000
mprotect(0x7f30d502e000, 32768, PROT_READ) = 0
mprotect(0x7f30d524f000, 4096, PROT_READ) = 0
mprotect(0x625000, 4096, PROT_READ) = 0
mprotect(0x7f30d5e49000, 4096, PROT_READ) = 0
munmap(0x7f30d5e42000, 19589) = 0
set_tid_address(0x7f30d5e3da10) = 692
set_robust_list(0x7f30d5e3da20, 0x18) = 0
rt_sigaction(SIGRTMIN, {0x7f30d426f9f0, [], SA_RESTORER|SA_SIGINFO, 0x7f30d42788d0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7f30d426fa80, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7f30d42788d0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192_1024, rlim_max=RLIM_INFINITY}) = 0
futex(0x7f30d504a9e4, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f30d504a9f0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
brk(0) = 0x1dc6000
brk(0x1de7000) = 0x1de7000
fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5e46000
write(1, "INFO: FBX to G3Dx converter,"..., 69INFO: FBX to G3Dx converter, version 0.01.0037 x64 (pre-release)
) = 69
write(1, "STATUS: Loading source file\n", 30STATUS: Loading source file
) = 30
brk(0x1e08000) = 0x1e08000
brk(0x1e29000) = 0x1e29000
brk(0x1e4a000) = 0x1e4a000
brk(0x1e6b000) = 0x1e6b000
getcwd("/opt/fbxconv", 1048) = 13
openat(AT_FDCWD, "/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbd/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbx", {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
stat("/var/www/#censor#/public_html#censor#/assets/Uploads/cube2.fbx", {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
open("/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbx", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5e45000
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 8192) = 8192
fstat(3, {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
lseek(3, 12288, SEEK_SET) = 12288
read(3, "\0\0\0\3550\0\0\0\0\0\0\0\0\0\0\10Settings50\0\0\1\0\0\0"..., 2768) = 2768
lseek(3, 15056, SEEK_SET) = 15056
read(3, "", 4096) = 0
lseek(3, 12288, SEEK_SET) = 12288
read(3, "\0\0\0\3550\0\0\0\0\0\0\0\0\0\0\10Settings50\0\0\1\0\0\0"..., 2768) = 2768
lseek(3, 15056, SEEK_SET) = 15056
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 457) = 457
close(3) = 0
munmap(0x7f30d5e45000, 4096) = 0
getcwd("/opt/fbxconv", 1048) = 13
openat(AT_FDCWD, "/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbd/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/var/www/#censor#public_html/#censor#/assets/Uploads/cube2.fbx", {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
stat("/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbx", {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
open("/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbx", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5e45000
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 8192) = 8192
fstat(3, {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
lseek(3, 12288, SEEK_SET) = 12288
read(3, "\0\0\0\3550\0\0\0\0\0\0\0\0\0\0\10Settings50\0\0\1\0\0\0"..., 2768) = 2768
lseek(3, 15056, SEEK_SET) = 15056
read(3, "", 4096) = 0
lseek(3, 12288, SEEK_SET) = 12288
read(3, "\0\0\0\3550\0\0\0\0\0\0\0\0\0\0\10Settings50\0\0\1\0\0\0"..., 2768) = 2768
lseek(3, 15056, SEEK_SET) = 15056
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 457) = 457
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 4096) = 4096
read(3, "DS\0\0\0\0D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360"..., 4096) = 4096
read(3, "\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\0\0D\0\0\0\0\0"..., 4096) = 4096
lseek(3, 12288, SEEK_SET) = 12288
read(3, "\0\0\0\3550\0\0\0\0\0\0\0\0\0\0\10Settings50\0\0\1\0\0\0"..., 4096) = 2768
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 457) = 457
read(3, "\361\1\0\0\1\0\0\0\25\0\0\0\6FileIdR\20\0\0\0)\260)\352\267&\314\306"..., 8192) = 8192
lseek(3, 8192, SEEK_SET) = 8192
read(3, "\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\0\0D\0\0\0\0\0"..., 3551) = 3551
read(3, "@.\0\0\0\0\0\0\0\0\0\0\vConnections3.\0\0\3\0\0\0"..., 8192) = 3313
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 740) = 740
read(3, "\375\2\0\0\1\0\0\0\5\0\0\0\7VersionId\0\0\0\24\3\0\0\1\0\0"..., 8192) = 8192
lseek(3, 12288, SEEK_SET) = 12288
read(3, "\0\0\0\3550\0\0\0\0\0\0\0\0\0\0\10Settings50\0\0\1\0\0\0"..., 560) = 560
read(3, "X2\0\0\1\0\0\0\25\0\0\0\6FileIdR\20\0\0\0)\260)\352\267&\314\306"..., 8192) = 2208
read(3, "", 4096) = 0
close(3) = 0
munmap(0x7f30d5e45000, 4096) = 0
getcwd("/opt/fbxconv", 1048) = 13
openat(AT_FDCWD, "/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbd/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbx", {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
stat("/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbx", {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
open("/var/www/#censor#/public_html/#censor#/assets/Uploads/cube2.fbx", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5e45000
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 8192) = 8192
fstat(3, {st_mode=S_IFREG|0644, st_size=15056, ...}) = 0
lseek(3, 12288, SEEK_SET) = 12288
read(3, "\0\0\0\3550\0\0\0\0\0\0\0\0\0\0\10Settings50\0\0\1\0\0\0"..., 2768) = 2768
lseek(3, 15056, SEEK_SET) = 15056
read(3, "", 4096) = 0
lseek(3, 12288, SEEK_SET) = 12288
read(3, "\0\0\0\3550\0\0\0\0\0\0\0\0\0\0\10Settings50\0\0\1\0\0\0"..., 2768) = 2768
lseek(3, 15056, SEEK_SET) = 15056
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 457) = 457
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 4096) = 4096
read(3, "DS\0\0\0\0D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360"..., 4096) = 4096
read(3, "\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\0\0D\0\0\0\0\0"..., 4096) = 4096
lseek(3, 12288, SEEK_SET) = 12288
read(3, "\0\0\0\3550\0\0\0\0\0\0\0\0\0\0\10Settings50\0\0\1\0\0\0"..., 4096) = 2768
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 457) = 457
read(3, "\361\1\0\0\1\0\0\0\25\0\0\0\6FileIdR\20\0\0\0)\260)\352\267&\314\306"..., 8192) = 8192
lseek(3, 8192, SEEK_SET) = 8192
read(3, "\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\0\0D\0\0\0\0\0"..., 3551) = 3551
read(3, "@.\0\0\0\0\0\0\0\0\0\0\vConnections3.\0\0\3\0\0\0"..., 8192) = 3313
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 1041) = 1041
read(3, "\337#\0\0\2\0\0\0\31\0\0\0\5ModelS\v\0\0\0Cube\0\1Mod"..., 8192) = 8192
lseek(3, 8192, SEEK_SET) = 8192
read(3, "\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\0\0D\0\0\0\0\0"..., 2443) = 2443
read(3, "\322-\0\0\0\0\0\0\0\0\0\0\16GlobalSettings\277)\0\0\1"..., 8192) = 4421
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 1041) = 1041
read(3, "\337#\0\0\2\0\0\0\31\0\0\0\5ModelS\v\0\0\0Cube\0\1Mod"..., 8192) = 8192
read(3, "\0\0\0UserData:$\0\0\1\0\0\0\r\0\0\0\4TypeS\10\0\0"..., 8192) = 5823
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 740) = 740
read(3, "\375\2\0\0\1\0\0\0\5\0\0\0\7VersionId\0\0\0\24\3\0\0\1\0\0"..., 8192) = 8192
lseek(3, 12288, SEEK_SET) = 12288
read(3, "\0\0\0\3550\0\0\0\0\0\0\0\0\0\0\10Settings50\0\0\1\0\0\0"..., 560) = 560
read(3, "X2\0\0\1\0\0\0\25\0\0\0\6FileIdR\20\0\0\0)\260)\352\267&\314\306"..., 8192) = 2208
read(3, "", 4096) = 0
brk(0x1e8c000) = 0x1e8c000
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 645) = 645
read(3, "\233\2\0\0\1\0\0\0\5\0\0\0\4NameS\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8192) = 8192
lseek(3, 8192, SEEK_SET) = 8192
read(3, "\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\0\0D\0\0\0\0\0"..., 991) = 991
read(3, "\213)\0\0\2\0\0\0'\0\0\0\tSceneInfoS\25\0\0\0Globa"..., 8192) = 5873
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 1041) = 1041
read(3, "\337#\0\0\2\0\0\0\31\0\0\0\5ModelS\v\0\0\0Cube\0\1Mod"..., 8192) = 8192
read(3, "\0\0\0UserData:$\0\0\1\0\0\0\r\0\0\0\4TypeS\10\0\0"..., 8192) = 5823
read(3, "", 4096) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "Kaydara FBX Binary \0\32\0\324\27\0\0\311\1\0\0\0"..., 1084) = 1084
read(3, "U\4\0\0\1\0\0\0\5\0\0\0\7VersionI\350\0\0\0\206\30\0\0\0\0\0"..., 8192) = 8192
read(3, "\0\0\1\0\0\0\5\0\0\0\7VersionId\0\0\0#%\0\0\0\0\0\0\0"..., 8192) = 5780
read(3, "", 4096) = 0
lseek(3, 8192, SEEK_SET) = 8192
read(3, "\0\0\0\0\0\0\360?D\0\0\0\0\0\0\360?D\0\0\0\0\0\0\0\0D\0\0\0\0\0"..., 1052) = 1052
read(3, ":$\0\0\1\0\0\0\r\0\0\0\4TypeS\10\0\0\0UserDataS$"..., 8192) = 5812
read(3, "", 4096) = 0
close(3) = 0
munmap(0x7f30d5e45000, 4096) = 0
write(1, "WARNING: [Cube] Node uses RrSs "..., 72WARNING: [Cube] Node uses RrSs mode, transformation might be incorrect
) = 72
write(1, "STATUS: [Cube] Triangulating F"..., 48STATUS: [Cube] Triangulating FbxMesh geometry
) = 48
mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d5d3b000
mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d4168000
mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30d4067000
munmap(0x7f30d5d3b000, 1052672) = 0
munmap(0x7f30d4067000, 1052672) = 0
munmap(0x7f30d4168000, 1052672) = 0
brk(0x1fa9000) = 0x1fa9000
brk(0x20a9000) = 0x20a9000
brk(0x21a9000) = 0x21a9000
brk(0x1ea9000) = 0x1ea9000
brk(0x1fa9000) = 0x1fa9000
brk(0x20a9000) = 0x20a9000
brk(0x21a9000) = 0x21a9000
brk(0x1ea9000) = 0x1ea9000
brk(0x1fa9000) = 0x1fa9000
brk(0x20a9000) = 0x20a9000
brk(0x21a9000) = 0x21a9000
brk(0x1ea9000) = 0x1ea9000
brk(0x1fa9000) = 0x1fa9000
brk(0x20a9000) = 0x20a9000
brk(0x21a9000) = 0x21a9000
brk(0x1ea9000) = 0x1ea9000
brk(0x1fa9000) = 0x1fa9000
brk(0x20a9000) = 0x20a9000
brk(0x21a9000) = 0x21a9000
brk(0x1ea9000) = 0x1ea9000
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault

GUI

Hi! I've made a Qt/GUI for fbx-conv. I want to talk with a developer and if it's ok to publish it on git(on fbx-conv page) so it would be easy to convert.

Model generated with Blender exports normal texture as diffuse texture.

I created a model in Blender and created an UV map. I created a new texture for the model's material, loaded the normal map into it, changed coordinates to UV and checked "Normal Map" under "Image Sampling" tab. I also went to the "Influence" tab and checked only the "Normal" influence with a value of 1.0.

I exported this model to FBX following the wiki's recomendation of leaving it in Z-UP mode. The conversion worked as normal but when I opened the resulting G3DJ file I noticed this material definition:

"materials": [
{
"id": "Normal",
"diffuse": [ 0.640000, 0.640000, 0.640000],
"specular": [ 0.800000, 0.800000, 0.800000],
"textures": [
{
"id": "Normal",
"filename": "square_normal.png",
"type": "DIFFUSE"
}
]
}
]

The texture is not mapped as a normal map, instead is being mapped as a simple texture mapping.

Is there anything wrong with my setup or is it just a bug? I'm using the commit "550272c0de9168fe01be2f004c8421700c0c5765".

too many keyframes?

fbx-conv seems to create additional keyframes.

From just 3 keyframes it created about 70+

fbx-conv fails to build with fbx-sdk 2014.2.1

Everything worked nicely with fbx-sdk 2014.2, but after update to 2014.2.1 I get error:

../../src/readers/FbxConverter.h:596:27: error: ‘class fbxsdk_2014_2_1::FbxScene’ has no member named ‘GetEvaluator’
     animStack->GetScene()->GetEvaluator()->SetContext(animStack);
                            ^

Full build output: http://pastebin.com/m2HtV2Lc

FBX-Conv generates incorrect animations from FBX exported from 3D Studio Max

First off, I use the tool "FBX Multi Take" from here:
http://www.turbosquid.com/FullPreview/Index.cfm/ID/701878 (there is a trial somewhere), and the trial version of 3D Studio Max 2010.

The Multi Take tool/plugin allows one to specify more than one animation in the exported FBX file. Out of the box, 3DS Max only supports one!

After exporting the FBX file, I open the file in "Autodesk FBX Converter 2013" (free). Here I can preview the takes, and verify that they work as expected.

After running them through the FBX-conv tool, it finds all the animations, eg. "Walk", "Run", "Attack" and so forth. But when I try to play the animation in LibGDX, it always plays the entire animation (Walk+Run+Attack). Looking at the generated g3dj file, all the animations "keyframes":"keytime" start at 0.000000

fbx-conv generates invalid animation?

Hello, I successfully compiled and tested Animation3DTest from gdx-tests programs. Unfortunately when I copied knight.fbx model from this repo and converted it with "fbx-convert-win32 -f -o G3DJ Knight.fbx", it generated completely different file. It's smaller and contains different data. When I tried to render my version - program stopped for a few second and then displayed only last frame of animation.

Here is version converted by me - https://dl.dropboxusercontent.com/u/12184815/knight.g3dj
Here is correct version - https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests-android/assets/data/g3d/knight.g3dj

fbx-conv crashes when converting fbx file exported from blender

I exported fbx file using blender. I have uploaded the blend and fbx files to mediafire and the link is given below:
http://www.mediafire.com/download/2ydfk62giwms1p7/exports.zip

The log is shown below. After the last line, fbx-conv crashes. What is the solution?

INFO: FBX to G3Dx converter, version 0.01.0000 x32 (pre-release)
STATUS: Loading source file
WARNING: [UniHuman] Node uses RrSs mode, transformation might be incorrect
WARNING: [Lamp] Node uses RrSs mode, transformation might be incorrect
WARNING: [Camera] Node uses RrSs mode, transformation might be incorrect
WARNING: [Armature] Node uses RrSs mode, transformation might be incorrect
WARNING: [Bone] Node uses RrSs mode, transformation might be incorrect
WARNING: [Body] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_hip] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_hip2] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_Thigh] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_Shin] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_foot] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_toes] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_hip] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_hip2] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_thigh] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_Shin] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_foot] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_toes] Node uses RrSs mode, transformation might be incorrect
WARNING: [Spine1] Node uses RrSs mode, transformation might be incorrect
WARNING: [Spine2] Node uses RrSs mode, transformation might be incorrect
WARNING: [Spine3] Node uses RrSs mode, transformation might be incorrect
WARNING: [Spine4] Node uses RrSs mode, transformation might be incorrect
WARNING: [Spine5] Node uses RrSs mode, transformation might be incorrect
WARNING: [Head] Node uses RrSs mode, transformation might be incorrect
WARNING: [Jaw] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_lip] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_lip] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_smile] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_smile] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_eyebrow] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_eyebrow_001] Node uses RrSs mode, transformation might be incorrect

WARNING: [L_eyebrow_002] Node uses RrSs mode, transformation might be incorrect

WARNING: [R_eyebrow] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_eyebrow_001] Node uses RrSs mode, transformation might be incorrect

WARNING: [R_eyebrow_002] Node uses RrSs mode, transformation might be incorrect

WARNING: [Body_008] Node uses RrSs mode, transformation might be incorrect
WARNING: [Body_008_L] Node uses RrSs mode, transformation might be incorrect
WARNING: [Body_008_R] Node uses RrSs mode, transformation might be incorrect
WARNING: [Body_009] Node uses RrSs mode, transformation might be incorrect
WARNING: [Body_009_L] Node uses RrSs mode, transformation might be incorrect
WARNING: [Body_009_R] Node uses RrSs mode, transformation might be incorrect
WARNING: [Body_010] Node uses RrSs mode, transformation might be incorrect
WARNING: [Body_010_L] Node uses RrSs mode, transformation might be incorrect
WARNING: [Body_010_L_001] Node uses RrSs mode, transformation might be incorrec
t
WARNING: [Body_010_R] Node uses RrSs mode, transformation might be incorrect
WARNING: [Body_010_R_001] Node uses RrSs mode, transformation might be incorrec
t
WARNING: [L_colar] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_arm] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_forearm] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_fingers] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_thumb] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_handTrack] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_colar] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_arm] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_forearm] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_fingers] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_thumb] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_handTrack] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribl1] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribl2] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribl3] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribr1] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribr2] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribr3] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribl4] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribl5] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribl6] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribr4] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribr5] Node uses RrSs mode, transformation might be incorrect
WARNING: [ribr6] Node uses RrSs mode, transformation might be incorrect
WARNING: [L_legtarget] Node uses RrSs mode, transformation might be incorrect
WARNING: [R_legtarget] Node uses RrSs mode, transformation might be incorrect
INFO: [shape(UniHuman)] polygons: 2590 (7770 indices), control points: 1302

Error when building fbx-conv

I'm sure I'm doing something wrong. I followed the building instructions and this is what I received from the build.

1>------ Build started: Project: fbx-conv, Configuration: Debug Win32 ------
1> main.cpp
1> Serialization.cpp
1>c:\users\jfe\documents\complexsive\cognigence\fbx-conv\src\readers\fbxconverter.h(207): warning C4018: '<' : signed/unsigned mismatch
1>c:\users\jfe\documents\complexsive\cognigence\fbx-conv\src\readers\fbxconverter.h(209): warning C4018: '<' : signed/unsigned mismatch
1>c:\users\jfe\documents\complexsive\cognigence\fbx-conv\src\readers\fbxconverter.h(214): warning C4018: '<' : signed/unsigned mismatch
1>c:\users\jfe\documents\complexsive\cognigence\fbx-conv\src\readers\fbxconverter.h(321): warning C4018: '<' : signed/unsigned mismatch
1>c:\users\jfe\documents\complexsive\cognigence\fbx-conv\src\readers\fbxconverter.h(346): warning C4018: '<=' : signed/unsigned mismatch
1>c:\users\jfe\documents\complexsive\cognigence\fbx-conv\src\readers\fbxconverter.h(347): warning C4018: '<=' : signed/unsigned mismatch
1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Let me know if more information is needed.
Thanks
Jeff

Can't Import G3DB file converted from FBX

I'm trying to convert the most basic blender model object (FBX) into a G3DB file and using it in-game, but I keep getting a NullPointerException.

Specs:
Linux Ubuntu 14.04 64-bit
fbx-conv v 0.01.0000 x64 (pre-release)
Blender v2.69

Steps to reproduce:

  • Open up blender and export the default starting cube as FBX
  • Convert FBX file to G3DB: fbx-conv-lin64 file.fbx
  • Load new G3DB file in game: Model fileModel = objLoader.loadModel(Gdx.files.internal("file.g3db"));

And fileModel is null.

Output of "fbx-conv-lin64 file.fbx":
INFO: FBX to G3Dx converter, version 0.01.0000 x64 (pre-release)
STATUS: Loading source file
PROGRESS: Import FBX 100.00%
WARNING: [Cube] Node uses RrSs mode, transformation might be incorrect
STATUS: [shape(Cube)] Triangulating FbxMesh geometry
VERBOSE: [shape(Cube)] polygons: 12 (36 indices), control points: 8
STATUS: Converting source file
STATUS: Closing source file
VERBOSE: Listing model information:
VERBOSE: ID :
VERBOSE: Version : Hi=0, Lo=1
VERBOSE: Meshes : 1 (144 vertices, 1 parts, 36 indices)
VERBOSE: Nodes : 1 root, 1 total, 1 parts
VERBOSE: Materials : 1 (0 textures)
STATUS: Exporting to G3DB file: file.g3db
STATUS: Closing exported file

Hope this helps.

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.