Libgdx 导入blender 3D动画

2023-10-30

导入blender3D模型可以看上篇libgdx导入blender模型

本篇3D动画在上篇的基础上。

具体参考官网 3D 动画和蒙皮
blender动画参考 八个案例教程带你从0到1入门blender【已完结】

打开上次的blender的,选则物体属性
在这里插入图片描述
点击位置和旋转x,y,z后面的小点,确定初始x,y,z位置,和初始角度
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改数值,并点击锁后面的方块
在这里插入图片描述
点击播放,查看动画
在这里插入图片描述
导出fbx,与上篇导出模型一致。导出时需要选择自定义属性
在这里插入图片描述
在这里插入图片描述

转换为g3dj,这里看不明白的去看我上篇,不会blender的建模的去看视频教程
上篇libgdx导入blender模型
blender动画参考 八个案例教程带你从0到1入门blender【已完结】
在这里插入图片描述

项目中使用,将导出的cube.g3dj放入项目assets/data下

package top.wuliaodebaozi2.blockgame.blockgameinternal;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
import com.badlogic.gdx.graphics.g3d.Environment;
import com.badlogic.gdx.graphics.g3d.Model;
import com.badlogic.gdx.graphics.g3d.ModelBatch;
import com.badlogic.gdx.graphics.g3d.ModelInstance;
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;
import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight;
import com.badlogic.gdx.graphics.g3d.Material;
import com.badlogic.gdx.graphics.g3d.loader.G3dModelLoader;
import com.badlogic.gdx.graphics.g3d.utils.AnimationController;
import com.badlogic.gdx.graphics.g3d.utils.CameraInputController;
import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder;
import com.badlogic.gdx.utils.JsonReader;

/**
 * Example program that imports "myModel.g3dj" from the assets folder and renders it onto the screen.
 */
public class ImportG3DJ implements ApplicationListener {
    private Environment environment;
    private PerspectiveCamera camera;
    private CameraInputController cameraController;
    private ModelBatch modelBatch;
    private Model model;
    private ModelInstance instance;

    private AnimationController controller;

    @Override
    public void create() {
        // Create an environment so we have some lighting
        environment = new Environment();
        environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
        environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));

        modelBatch = new ModelBatch();

        // Create a perspective camera with some sensible defaults
        camera = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        camera.position.set(10f, 10f, 10f);
        camera.lookAt(0, 0, 0);
        camera.near = 1f;
        camera.far = 300f;
        camera.update();

        // Import and instantiate our model (called "myModel.g3dj")
        ModelBuilder modelBuilder = new ModelBuilder();
        model = new G3dModelLoader(new JsonReader()).loadModel(Gdx.files.internal("data/cube.g3dj"));
        instance = new ModelInstance(model);
        controller = new AnimationController(instance);
        controller.setAnimation("Cube|CubeAction",-1);

        cameraController = new CameraInputController(camera);
        Gdx.input.setInputProcessor(cameraController);
    }

    @Override
    public void render() {
        cameraController.update();
        controller.update(Gdx.graphics.getDeltaTime());
        // Clear the stuff that is left over from the previous render cycle
        Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);

        // Let our ModelBatch take care of efficient rendering of our ModelInstance
        modelBatch.begin(camera);
        modelBatch.render(instance, environment);
        modelBatch.end();
    }

    @Override
    public void dispose() {
        modelBatch.dispose();
        model.dispose();
    }

    @Override
    public void resize(int width, int height) { }

    @Override
    public void pause() { }

    @Override
    public void resume() { }
}

这里主要与上篇导入模型的代码区别在于,增加了

ModelInstance instance;
AnimationController controller;
public void create() {
    ...
    instance = new ModelInstance(model);
    controller = new AnimationController(instance);
    controller.setAnimation("Cube|CubeAction",-1);
}
public void render() {
    ...
    controller.update(Gdx.graphics.getDeltaTime());
    ...
}

代码中controller.setAnimation(“Cube|CubeAction”,-1); 动画的名字
用文本方式打开导出的cube.g3dj 可以看到"animations"数据块,看到id,就是动画的名字
在这里插入图片描述

效果:
https://live.csdn.net/v/280148
请添加图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Libgdx 导入blender 3D动画 的相关文章

  • 如何在android中实现触摸平滑图像橡皮擦?

    我已经从 API 演示中看到了finturePaint java 我想实现触摸平滑橡皮擦 通过在android中触摸移动来擦除部分图像 FingerPaint 告诉我要实现这个 mPaint setXfermode new PorterDu
  • 设置文本视图 Android 的文本颜色

    在 string xml 文件中我使用以下标签
  • android edittext中的字符映射

    我想让我的编辑文本就像我写字符 g 时一样 它是相关的映射自定义字符应该写成印地语中的 我认为应该有字符映射 但没有知识任何人都可以帮助我 怎么做 其他应用程序https play google com store apps details
  • AdapterContextMenuInfo 始终为 null

    我尝试通过 android 开发文档中的书来做到这一点 this didn t create a menu i don t know why registerForContextMenu getListView setListAdapter
  • Android Q:file.mkdirs() 返回 false

    我们有一个应用程序 使用外部存储来存储一些临时文件 图像 二进制数据 该代码已经运行了几年 直到最近才发生重大变化 在 Android Q 上它不起作用 File f new File Environment getExternalStor
  • Recyclerview 动态部分不使用任何第三个库

    我想将标头添加到 recyclerview 我正在尝试使用来实现它 Override public int getItemViewType int position depends on your problem if position 0
  • Android 初学者:Android gridview 中的触摸事件

    我正在使用以下代码来使用 gridview 执行操作 稍作修改http developer android com resources tutorials views hello gridview html http developer a
  • 在 android 中建立与 MySQL 的池连接

    我需要从我的 Android 应用程序访问 MySQL 数据库 现在所有的工作都通过 DriverManager getConnection url 等等 但我必须从多个线程访问数据库 所以我必须使用连接池 问题1 是 com mysql
  • Android:后台Activity可以执行代码吗?

    后台的活动是否被视为 正在运行 并且可以执行代码 还是处于挂起状态 他们暂停了 活动生命周期 http developer android com reference android app Activity html ActivityLi
  • Android - AudioRecord类不读取数据,audioData和fftArray返回零

    我是 Android 新手 一直在开发音调分析器应用程序 最低 SDK 8 我读了很多关于如何实现 Audiorecord 类的文章 但我想知道为什么它在我录制时不读取任何数据 我尝试显示 audioData 和 fftArray 的值 但
  • 使用片段时应用程序崩溃

    我正在处理碎片和 我的代码中有一个我找不到的问题 logcat 指向我的一个片段中的这段代码 Override public View onCreateView LayoutInflater inflater ViewGroup conta
  • 对于一个单元格,RecyclerView onBindViewHolder 调用次数过多

    我正在将 RecyclerView 与 GridLayoutManager 一起使用 对于网格中的每个项目 我需要调用 REST api 来检索数据 然后 从远程异步获取数据后 我使用 UIL 加载 显示图像 一切似乎都很好 但我发现 on
  • Mipmap 与可绘制文件夹[重复]

    这个问题在这里已经有答案了 我正在使用 Android Studio 1 1 Preview 1 我注意到 当我创建一个新项目时 我得到以下层次结构 不同 DPI 的 Mipmap 文件夹 不再有不同 DPI 的可绘制文件夹 我应该将所有资
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • 上网本上可以进行Android开发吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用我的上网本进行 Android 开发 但是当我尝试使用 Eclipse 运行 SDK 时 没有加载任何内容 上网本对于 Android 开发来
  • 卡片视图 单击卡片移至新活动

    我是 Android 编程新手 正在研究卡片布局 我想知道如何使其可点击 android clickable true android foreground android attr selectableItemBackground 我的卡
  • 插件“Android Bundle Support”不兼容

    大家好 自从上次更新以来 当我启动 android studio 时 我遇到了一个非常奇怪的错误 我有这个错误 插件错误 插件 Android Bundle Support 不兼容 直到构建 AI 195 SNAPSHOT 我在网上找不到任
  • 在 Android 应用程序资源中使用 JSON 文件

    假设我的应用程序的原始资源文件夹中有一个包含 JSON 内容的文件 我如何将其读入应用程序 以便我可以解析 JSON See 开放原始资源 http developer android com reference android conte
  • 我的应用程序中的后退按钮出现问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在手机关闭时清除共享首选项值 你
  • Android 屏幕方向错误

    我使用的是 Android HTC HERO 2 1 版本 我写的活动

随机推荐

  • 2021-05-01

    def print topic texts n topics n words 输出主题模型结果 param n topics LDA主题数量 param n words 主题的词范围 数量 return 输出公共主题 单日主题 准备语料库
  • python中的类与对象

    1 类和对象的关系 类就相当于 lt 模板 gt 或者 lt 模具 gt 对象就相当于 lt 产品 gt 得有了类 我们才能制造各种对象 就像我们有了模具 才能生产各种产品一样 Python中 万事万物都可以是对象 类 这种模板层级的本身也
  • linux入门---如何实现用户切换

    目录标题 基本用户认识 用户的切换 su su exit su 用户名 sudo 基本用户认识 在linux系统中将用户分为两个大类一个是root用户一个是普通用户 root用户是linux操作系统的超级管理员 相当于古代的皇帝不会受到任何
  • spring 事务总结

    参考视频 https www bilibili com video BV1aC4y1p7bF p 5 参考文档 https www cnblogs com myitnews p 12364455 html autoid 4 0 0 事务开启
  • 电源防反接电路设计

    在直流电源系统中 电源的输入端 为了防止电源正负极接反 通常会在输入端对电源进行防反接保护 防反接保护的方法有很多种 今天就来介绍一下 二极管防反接 利用二极管的单向导通特点实现防反接 这种方式是最简单的防反接方法 成本也低 但是缺点也很明
  • 机器学习概述

    一 定义 机器学习是一门从数据中研究算法的科学学科 机器学习直白来讲 是根据已有的数据 进行算法选择 并基于算法和数据构建模型 最终对未来进行预测 通过数据训练出一个模型 gt 预测未知属性 理性认识 输入 x X 属性值 输出 y Y 目
  • string篇

    目录 构造函数原型 赋值重载函数 assign 拼接函数原型 append 查找和替换函数原型 find replace 字符串比较函数 compare 字符存取 at 插入和删除字符串 insert erase 获取子串 substr s
  • Swift 使用CocoaPods 导入第三方网络库——Alamofire

    1 在已经安装了CocoaPods的前提下 cd进入项目所在目录 创建Podfile文件 touch Podfile 2 打开pod file文件 open e Podfile 3 在打开的Podfile文本编辑器里输入 source ht
  • 【二十四】springboot使用EasyExcel和线程池实现多线程导入Excel数据

    springboot篇章整体栏目 一 springboot整合swagger 超详细 二 springboot整合swagger 自定义 超详细 三 springboot整合token 超详细 四 springboot整合mybatis p
  • 基于Java+SpringBoot+Vue+Uniapp前后端分离疫情酒店管控系统设计与实现(有需求文档、演示视频)

    博主介绍 全网粉丝3W 全栈开发工程师 从事多年软件开发 在大厂呆过 持有软件中级 六级等证书 可提供微服务项目搭建与毕业项目实战 博主也曾写过优秀论文 查重率极低 在这方面有丰富的经验 博主作品 Java项目案例 主要基于SpringBo
  • GPS监控经济效益

    一 贵公司车辆使用过程中 是否有一些困惑 1 车辆去向不明 行驶路线无法掌控 车辆离开就好像失控一样 2 车辆利用率低 一天的事情两天做 真正的 早出晚归 3 车辆空载率高 由于货主和物流企业之间信息交流不畅 或者公司调度因为缺乏有效的实时
  • python 金融时间序列分析_利用动态深度学习预测金融时间序列基于Python

    作者 Jeremy Curuksu Forecasting the evolution of events over time is essential to many applications such as option pricing
  • 【深度学习】【NLP】NLP课件整理 第四章:RNN,LSTM,GRU,注意力机制,Attention

    文档 4 1 认识RNN模型 note 了解什么是RNN模型 了解RNN模型的作用 了解RNN模型的分类 文档 4 2 传统RNN模型 note 了解传统RNN的内部结构及计算公式 掌握Pytorch中传统RNN工具的使用 了解传统RNN的
  • hadoop安装

    hadoop思想 分而治之 并行计算 计算向数据移动 数据本地化读取 模块 common 支持hadoop其他模块的公共工具 hdsf 分布式存储 相比于其他分布式文件系统设计思想是为了做计算使用 MapReduce 分布式计算 yarn
  • 数字孪生模型构建理论及应用

    源自 计算机集成制造系统 作者 陶飞 张贺 戚庆林 徐 俊 孙铮 胡天亮 刘晓军 刘庭煜 关俊涛 陈畅宇 孟凡伟 张辰源 李志远 魏永利 朱铭浩 肖斌 摘 要 数字孪生作为实现数字化转型和促进智能化升级的重要使能途径 一直备受各行各业关注
  • 模拟器件

    模拟部分RF也有采用cmos工艺的 就是堆一些二极管 三极管做一个设备 感觉和大学接触的模拟电路很类似 RF现在工艺和asic数字差不多了 也22nm了 我一直以为RF使用GaAs 和数字部分不同 哈哈哈 大约几千个器件堆个模拟器件出来 好
  • 【机器学习】为何要归一化和归一化,标准化的处理方法

    为何要归一化 如何归一化和标准化 为何要归一化 提升模型的收敛速度 提升模型的精度 总结 如何归一化和标准化 min max 0 1 标准化 z score 标准差 标准化 nonlinearity 非线性 归一化 为何要归一化 提升模型的
  • 生产排程系统_案例:PCBA应用易普优APS实现高级计划排程

    一 项目介绍 1 生产计划现状 某PCBA企业 以下简称A企业 的产品生产是典型的多品种 小批量 多变化的生产模式 其中产品种类有1000多种 主流的200多种 每个月数百个生产订单 分解到工序以后的工单达数千个 该企业的计划采用了计划部
  • 【OpenGL】笔记十九、深度测试

    1 流程 在前面的教程中 我们有简略介绍过深度测试 它的存在帮助我们最终渲染的画面不会存在那些本应被遮挡住了的图像 其实若深究其中的原理的话 倒也没多复杂 就是每次渲染一个图形时测测当前这个要渲染的像素是否是目前离屏幕最近的 若是 就说明没
  • Libgdx 导入blender 3D动画

    导入blender3D模型可以看上篇libgdx导入blender模型 本篇3D动画在上篇的基础上 具体参考官网 3D 动画和蒙皮 blender动画参考 八个案例教程带你从0到1入门blender 已完结 打开上次的blender的 选则