fbxsdk 的 JNI 库
来源:互联网 发布:saber软件芯片tl494 编辑:程序博客网 时间:2024/06/13 21:57
fbxsdk是用来读写autodesk的fbx的库,但是是一个c++库,在java上无法直接使用,也没有找到有人做了这个工作,只好自己写一个jni的库
原理:
- 使用lynx从 http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/cpp_ref/hierarchy.html 把文档抓下来,转成文件.
- 写了一个shell的脚本把转成普通文本的文档进行分析,找出类名,方法和属性,自动生成对应的cpp和java文件
- 手动修复少量的文档错误和增加一些辅助类的工具,加上文档中没有的枚举值
- 编写makefile,编译成JNI的动态库
java程序开始时,加载一下System.loadLibrary("FbxsdkJni"), 然后就可以用了。
代码在
https://github.com/aerror2/FbxsdkJNI
使用例子:
private long createSkeletonNode(long pScene, String name, long mt,double size, int type) {long lpSkeleton = FbxSkeleton.Create(pScene, name);FbxSkeleton.SetSkeletonType(lpSkeleton, type);FbxSkeleton.mepSetSize(lpSkeleton, size);long lSkeletonNode = FbxNode.Create(pScene, name);FbxNode.SetNodeAttribute(lSkeletonNode, lpSkeleton);long t = FbxAMatrix.GetT(mt);long r = FbxAMatrix.GetR(mt);long s = FbxAMatrix.GetS(mt);FbxNode.mepSetLclTranslation(lSkeletonNode, t);FbxNode.mepSetLclRotation(lSkeletonNode, r);FbxNode.mepSetLclScaling(lSkeletonNode, s);FbxVector4.meDestroy(t);FbxVector4.meDestroy(r);FbxVector4.meDestroy(s);return lSkeletonNode;}test(){ long mgr = FbxJnimgr.meCreate(); long lpScene = FbxJnimgr.GetScene(mgr); long lpMesh = createFbxMesh(mgr,lpScene,meshData); long famt = FbxAMatrix.meCreate();FbxAMatrix.SetTRS(famt, t1, r1, s1); long lpRootNode = FbxScene.GetRootNode(lpScene); long lSklNode = createSkeletonNode(pScene, n, famt, 100.0, FbxSkeleton.EType.eRoot); FbxNode.AddChild(lpRootNode, lSklNode); FbxJnimgr.SaveScene(mgr, lpScene, outputfileNanme); FbxJnimgr.meDestroy(mgr); }
0 0
- fbxsdk 的 JNI 库
- 解决fbxsdk链接出现的unresolved external symbol KFbxSurfaceMaterial::ClassId
- FbxSDK使用总结
- FbxSDK官网文档阅读总结
- jni 静态库的编译
- JNI 如何使用dlopen,dlsym调用第三方自定义的 .so库(包括JNI->JNI)
- JNI,window下的JNI
- JNI调用本地库的问题
- [JNI学习]---调用现有的so库
- android JNI的.so库调用
- 笔记三---jni库的加载
- JNI 如何使用dlopen,dlsym调用第三方自定义的 .so库( JNI->C,C++)
- Android开发之JNI调用本地C库专题(一):JNI的使用
- failed to load the JNI shared library 未能加载JNI的共享库
- Android Studio调用 符合JNI标准和非JNI标准的so库总结
- JNI入门 一个JNI的HelloWorld 程序
- 【JNI】JNI中java类型的简写
- 【Tech-Android-Jni】JNI的数据类型
- 两种计算器的实现方式
- 后台开发基础
- 【一步一步学习VBA】VBA获取单元格数值并弹窗显示
- CodeForces 702E Analysis of Pathes in Functional Graph(倍增)
- win8.1 创建 github.io
- fbxsdk 的 JNI 库
- Retrofit2 完全解析 探索与okhttp之间的关系
- 关于水平居中,垂直居中的三种办法
- ace在linux下编译
- 树的直径学习总结
- js笔记整理02
- 大数据IMF传奇行动绝密课程第20课:Top N彻底解秘
- AsyncTask异步从网上下载图片
- gitlab安装 vmware ubuntu16 linux 虚拟机 dns无法解析