在安卓里用c++显示骨骼动画

1. 程序模块图

在这里插入图片描述
在这里插入图片描述

2. 编译第三方库Assimp

2.1 下载

官网下载5.0.0版本,https://codeload.github.com/assimp/assimp/zip/refs/tags/v5.0.0

2.2 生成安卓编译链

解压后在assimp-5.0.0下建文件夹BuildAssimp
放两个脚本make_standalone_toolchain.bat

python D:/Android/Sdk/ndk/23.1.7779620/build/tools/make_standalone_toolchain.py --arch=arm --stl=libc++ --api=16 --install-dir=android-toolchain-16-llvm-arm

make_standalone_toolchain.py 路径需要改成自己本地的
运行make_standalone_toolchain.bat后会在BuildAssimp下生成android-toolchain-16-llvm-arm,这就是安卓编译链

2.3 编译

,build_assimp.bat

@REM @echo off  
cls  
  
REM *NOTE* Change these based on   
SET ASSIMP_DIR=assimp-5.0.0
SET OUTPUT_DIR=assimp-build-arm 
SET ANDROID_PATH=D:\Android\Sdk
SET NDK_PATH=D:\Android\Sdk\ndk\23.1.7779620
SET NDK_TOOLCHAIN=%~dp0android-toolchain-16-llvm-arm
SET CMAKE_TOOLCHAIN=%NDK_PATH%\build\cmake\android.toolchain.cmake  
SET CMAKE_PATH=%ANDROID_PATH%\cmake\3.22.1
  
REM *NOTE* Careful if you don't want rm -rf, I use it for testing purposes.  
del \F \S \Q %OUTPUT_DIR%
mkdir %OUTPUT_DIR%  
  
REM pushd doesn't seem to work ):<  
cd %OUTPUT_DIR%  
  
if not defined ORIGPATH set ORIGPATH=%PATH%  
SET PATH=%CMAKE_PATH%\bin;%ANDROID_PATH%\tools;%ANDROID_PATH%\platform-tools;%ORIGPATH%;%NDK_TOOLCHAIN%\bin;
  
%CMAKE_PATH%\bin\cmake.exe -GNinja -DCMAKE_TOOLCHAIN_FILE=%CMAKE_TOOLCHAIN%  -DANDROID_ABI="armeabi-v7a" -DASSIMP_ANDROID_JNIIOSYSTEM=ON -DANDROID_NDK=%NDK_PATH% -DCMAKE_MAKE_PROGRAM=%CMAKE_PATH%\bin\ninja.exe -DCMAKE_BUILD_TYPE=Release  -DANDROID_NATIVE_API_LEVEL=24 -DANDROID_FORCE_ARM_BUILD=TRUE -DCMAKE_INSTALL_PREFIX=install -DANDROID_STL=c++_static -DCMAKE_CXX_FLAGS=-Wno-c++11-narrowing -DANDROID_TOOLCHAIN=clang -DASSIMP_BUILD_TESTS=OFF   -DASSIMP_NO_EXPORT=TRUE -DASSIMP_BUILD_ASSIMP_TOOLS=FALSE -DASSIMP_BUILD_SAMPLES=FALSE -DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=TRUE ..\..\..\%ASSIMP_DIR%
  
%CMAKE_PATH%\bin\cmake.exe --build .
  
REM D:\Android\Sdk\ndk\23.1.7779620\prebuilt\windows-x86_64\bin\make.exe

cd ..

需要把ANDROID_PATH,NDK_PATH路径需要改成自己本地的
运行build_assimp.bat后在assimp-build-arm/code/得到libassimp.so

3. 生成apk

Android Studio把工程编译成apk,安装到模拟器后,可以运行

4. 模型与shader资源

资源需要放在安卓本地路径,两个路径任选

  • /storage/emulated/0/Download
  • /storage/emulated/0/Android/data/com.example.opengles/files
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会根据您的要求帮您编写代码。不过在开始编写代码之前,需要明确您的系统环境和开发环境是否已搭建好。如果没有的话,您需要先安装Simbody库,并配置好相关环境变量。 以下是实现simbody创建丝杆模型并动画显示C++代码,您可以参考: ```c++ #include <cstdio> #include <cmath> #include <chrono> #include <Simbody.h> using namespace SimTK; int main() { // 创建系统 MultibodySystem system; SimbodyMatterSubsystem matter(system); GeneralForceSubsystem forces(system); // 设置重力,速度和加速度均为0 Force::Gravity gravity(forces, matter, -YAxis, 9.8); // 设置时间步长 system.setTimeStep(0.01); // 创建丝杆模型 MobilizedBody::Free ground(matter.Ground()); MobilizedBody::Pin rod1(ground, Vec3(0), matter.updBody(Body::Rigid(1.0)), Vec3(0, 1, 0)); // 创建可视化对象 Visualizer viz(system); viz.setBackgroundType(viz.SolidColor); viz.setBackgroundColor(Black); viz.setGroundHeight(-1.0); system.addEventReporter(new Visualizer::Reporter(viz, 0.01)); // 开始模拟 State state = system.realizeTopology(); viz.report(state); for (int i = 0; i < 1000; ++i) { rod1.setAngle(state, 0.1 * i); system.realize(state, Stage::Dynamics); viz.report(state); } return 0; } ``` 这段代码使用了Simbody库中的MobilizedBody::Pin类创建了一个丝杆模型,并使用Visualizer类创建了可视化对象,通过遍历小时间步并更新状态,最终实现了动画显示。 如果您需要更多关于Simbody的使用教程和例子,请查阅Simbody官方文档和示例程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值