libgdx导入blender模型

2023-11-19

具体就是参考 官网 https://libgdx.com/wiki/graphics/3d/importing-blender-models-in-libgdx

blender 教程可以看八个案例教程带你从0到1入门blender【已完结】

这里贴一下过程图。
1.初始环境搭建略过。
2.打开blender
选中摄像机和灯光,右键进行删除。
在这里插入图片描述

在这里插入图片描述
3.选中正方体,点击材质
在这里插入图片描述
给正方体添加一个颜色,选中基础色,设置一个颜色。
在这里插入图片描述
点击视图着色方式,查看着色效果
在这里插入图片描述
4.导出fbx
在这里插入图片描述
缩放设置0.01,向前选中z向前
因为Blender 以 1 个单位 = 1 米的速度导出,而 libGDX 以 1 个单位 = 1 厘米的比例导入,使导入的模型大 100 倍。将导出选项从默认的 1.00 更改为 0.01 进行修复。更改 Blender fbx 导出选项。

在这里插入图片描述
下载最新版本的fbx-conv ,https://github.com/libgdx/fbx-conv,用于将导出的fbx转化为g3dj(libgdx使用的格式)
5.将导出的fbx和下载的fbx-conv放于同一文件夹下。
在目录上输入cmd回车
在这里插入图片描述
输入命令进行转换
在这里插入图片描述
得到转换文件cube.g3dj
在这里插入图片描述

在libgdx中进行应用。

将转换得到的cube.g3dj文件放在assets/data/下
在这里插入图片描述

最后代码

package top.xxx.xxx.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;

    @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);

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

    @Override
    public void render() {
        cameraController.update();
        // 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() { }
}

效果
在这里插入图片描述

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

libgdx导入blender模型 的相关文章

  • RecyclerView 未显示列表中的所有项目

    我在用RecyclerView在我的应用程序中 每次我打开屏幕时 我只能看到一项 但当我调试时 它每次都会出现onBindViewHolder method 这是我的适配器 Override public ViewHolder onCrea
  • “此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容。” -反应-原生

    当我尝试运行反应本机应用程序时 我遇到此错误react native run android 我无法安装该应用程序 我正在尝试构建一个相机应用程序 我当前的react native版本 0 62 0 React cli版本 2 0 1 De
  • Android Ble GATT_ERROR 133 经常使用三星设备

    我正在研究 BLE 应用程序 我已经使用 Nexus Moto Samsung LG 等不同设备进行了测试 我仅在三星设备中收到 GATT 错误 133 三星 A5 2016 尝试连接 10 次 但只连接了 2 或 3 次 请帮助我 Non
  • 居中复选框视图

    如果除了 或代替 复选框之外 您还对单选按钮感兴趣 请参阅this https stackoverflow com questions 16701806 centering views 2而是提问 尽管存在
  • Android:如何从输入流创建 9patch 图像?

    我使用下面的代码实例化 9patch 图像并将其设置为按钮的背景 下图显示了不理想的结果 InputStream MyClass class getResourceAsStream images btn default normal 9 p
  • Notification.Builder 中 setGroup() 的用途是什么?

    我对目标的理解有些困难setGroup http developer android com reference android app Notification Builder html setGroup java lang String
  • Android中如何将文件写入raw文件夹?

    我认为这是一个非常基本的问题 我目前正在编写这样的文件 File output new File exampleout mid 现在 我想将文件写入 myproject res raw 我读到我可以通过将完整的网址放在 中来做到这一点 但
  • 无法找到/下载 AppCompat-v7:23.1.1

    怎么了 我遇到了很多 找不到 appcompat v7 23 1 1 的问题 许多解决方案都不起作用 经过几个小时的思考和寻找答案 我遇到了一个奇怪的问题 I have gotAndroid 支持库 23 1 1 已安装 所有功能 exce
  • 有没有办法替代Android中的标准Log?

    有没有办法以某种方式拦截对 android 中标准 Log 的调用并执行其他操作 在桌面 Java 中 人们通常会得到一些记录器 因此有多种方法可以安装不同的日志处理程序 实现 但是 Android似乎对Log有静态调用 我找不到任何有关替
  • 当编辑文本获得焦点时更改边框颜色

    我想知道当编辑文本聚焦时如何更改它的边框颜色 目前它看起来像这样 我尝试过在SDK中检查源图片 但我无法理解它 我也尝试过使用xml 但无法仅更改边框颜色 如果我找到源图片 我可以在 Photoshop 中编辑以更改颜色 有什么关于如何执行
  • 返回主要活动(意图)时传递数据我做错了什么?

    我是安卓新手 这可能是最简单的问题 但我不明白这里出了什么问题 我试图创建一个通过意图传递值的基本示例 因此 当我关闭第二个活动时 我需要将数据传递到主活动 这是代码 意图测试1 主要活动 public void onClick View
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add
  • 无法在 Java 中输出正确的哈希值。怎么了?

    在我的 Android 应用程序中 我有一个 SHA256 哈希值 我必须使用 RIPEMD160 消息摘要算法进一步对其进行哈希值 我可以输出任何字符串的正确 sha256 和ripemd160 哈希值 但是当我尝试使用ripemd160
  • 活动组代码示例

    有人可以给我一些使用活动组的示例代码吗 我的应用程序中有一些按钮 我想将活动应用于这些按钮 目前我正在使用 setVisibility 但我被告知活动组将是更好的选择 这是另一个ActivityGroup 示例项目 http richipa
  • 在尝试使用 GPS 之前如何检查 GPS 是否已启用

    我有以下代码 但效果不好 因为有时 GPS 需要很长时间 我该如何执行以下操作 检查GPS是否启用 如果启用了 GPS 请使用 GPS 否则请使用网络提供商 如果 GPS 时间超过 30 秒 请使用网络 我可以使用时间或 Thread sl
  • 在 Android ADT Eclipse 插件中滚动布局编辑器

    有谁知道当布局编辑器的内容溢出一个 屏幕 时如何滚动这些内容 我说的是在设计时使用 ADT 布局编辑器 而不是在物理设备上运行时滚动 效果很好 关闭 Android 布局编辑器中的剪辑 切换剪辑 按钮位于 Android 布局编辑器的右上角
  • 如何以编程方式创建 CardView

    我正在开发一个 Android 应用程序Java Android Studio 我想在活动中创建CardView以编程方式 我想将以下属性设置为CardView layout width wrap content layout row 0
  • 从多个 TextView 中选择文本

    如何在android中从多个文本视图中选择文本 我已经尝试过以下代码 该代码一次仅适用于一个文本视图 我想一次性从许多文本视图中复制文本 android textIsSelectable true 你不能同时这样做 您需要在单个文本视图中设
  • 画布:尝试使用回收的位图错误

    我是一个相当新的程序员 所以任何建议将不胜感激 我有一个类 每次调用它时都会在循环中运行 AsyncTask AsyncTask 看起来像这样 public class LoadImageTask extends AsyncTask
  • 我可以通过在 Android Activity 中声明适当的成员“静态”来提高效率吗

    如果一个 Activity 在实践中是单例 我认为我可以通过声明适当的成员 静态 来获得一些效率 且风险为零 是的 The Android 文档说 http developer android com guide topics fundam

随机推荐

  • 送一个2022年最赚钱的方法!包含操作方法!

    在互联网上 可恶的人有很多 值得我们学习的人也有很多 有的人做起事来不讲武德 而有的人却是我们值得学习一生的榜样 在赚钱的路上 信息就是金钱 你掌握了信息的源头 就掌握的金矿 拥有足够的信息来源 那么你就有足够的金钱 假如你想在一个行业里快
  • shell的排序

    目录 一 冒泡排序 1 定义 2 基本思想 3 算法思路 4 算法逻辑图 5 示例1 将指定数组重新排序 6 示例2 写一个函数 输入任何数组都可以进行排序 二 直接选择排序 1 直接选择排序的逻辑图 2 示例 将指定数组重新排序 三 反转
  • 使用Aspose在Java中将Excel文件转换为HTML

    Excel电子表格可让您以表格形式存储和组织数据 也可以执行计算以及生成不同类型的图形和图表以分析数据 但是 在各种情况下 可能需要执行Excel到HTML的转换才能将工作表转换为HTML页面 例如 将电子表格的内容嵌入到网页中时 因此 本
  • 出现Unknown initial character set index ‘255‘ received from server问题时如何解决

    Unknown initial character set index 255 received from server Initial client character set can be forced via the characte
  • 逻辑回归(Logistic Regression, LR)简介

    逻辑回归 Logistic Regression LR 简介 标签 空格分隔 机器学习 机器学习最通俗的解释就是让机器学会决策 对于我们人来说 比如去菜市场里挑选芒果 从一堆芒果中拿出一个 根据果皮颜色 大小 软硬等属性或叫做特征 我们就会
  • Shell脚本运行方式

    Shell脚本通常以 shebang 起始 后跟Shell解释器路径 bin bash 两种运行脚本文件的方式 bash 文件名 文件位于当前目录下 此种方式不用shebang 文件名 或 完整路径 代表当前目录 脚本必须有可执行权限 并且
  • selenium如何关闭浏览器中新打开的标签页

    最近在用selenium做自动化时遇到了一个问题 那就是当我在当前页面点击了一个链接之后 弹出一个新的页签来展示内容 而不是在当前页面展示 而我要做的就是关闭这个新打开的页签 因为我后续的操作是基于有链接的那个页面的 经过多次思考和选择 终
  • flex布局中flex-shrink的使用

    div style width 100 display flex border 1px solid black div style width 500px height 100px background color red 1 div di
  • 微信小程序如何获取自定义组件中properties的属性并修改,以及父组件和子组件相互传值

    原因 因为自己想了解组件中properties里面的值如何获取到而记录这篇文章 一 自创自定义组件 在json文件夹写上 component true 二 父组件的操作步骤 2 1 在json文件夹加上使用组件 2 2 在js文件中写好要传
  • C++ 与 Cuda 混合编程的CMakeList 写法 与例子

    前言 一般的情况下 C与Cuda混合编程 可能通过 VS的UI方式 创建工程 但是 这种情况下效率不高 并且不能跨平台 因此 高级的方式 是使用CMakeList的方式 创建工程 Windows情况下 可以CMakeList 成Visual
  • 再见以前说再见 大数据存储复习

    创建一个数据库 数据库在HDFS上的默认存储路径是 user hive warehouse db 创建数据库 create database if not exists school 过滤显示查询的数据库 show databases li
  • JetBrains开发者日见闻(一)之Kotlin/Native 尝鲜篇

    简述 今天我们来讲点Kotlin中比较时髦的东西 有的人可能会说 不像你之前的风格啊 之前的文章不是一直在死扣语法以及语法糖背后秘密 当你还在死扣泛型语法的时候 别人的文章早就说了Kotlin Native和Kotlin1 3的新特性 瞬间
  • Java 中Math类的使用

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 前言 Math类概述 Math类包含执行基本数字运算的方法 下面通过代码来演示 Math类的常用方法 public class Math
  • spring事务,TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    在aop配置事务控制或注解式控制事务中 try catch 会使事务失效 可在catch中抛出运行时异常throw new RuntimeException e 或者手动回滚TransactionAspectSupport currentT
  • AD20/Altium designer——如何对PCB添加图片丝印、自定义LOGO、专属图案

    本篇介绍如何在PCB添加图案丝印并调节大小 主要步骤 图片转单色图 bmp格式 复制粘贴进word文档 再次复制到AD 1 选择图片用电脑自带的画图软件打开 2 将图片另存为 bmp格式 3 查看图片效果是否理想 图片是否需要取反色 选做
  • 第三方支付API支付宝支付申请流程 支付宝新老版本

    新版本 Maven 引入jar包
  • foreach遍历出来总是取第一个值或最后一个值?怎么取出想要的id对应值

    这个问题还是比较常见的 问题原因 没有合理的取到相对应的id或者没有使id成为唯一性 解决方法 举个例子 建个表单
  • 华为OD机试真题- 任务混部

    题目描述 公司创新实验室正在研究如何最小化资源成本 最大化资源利用率 请你设计算法帮他们解决一个任务混部问题 有taskNum项任务 每个任务有开始时间 startTime 结束时间 endTime 并行度 parallelism 三个属性
  • LeetCode 剑指 Offer II 079. 所有子集

    给定一个整数数组 nums 数组中的元素 互不相同 返回该数组所有可能的子集 幂集 解集 不能 包含重复的子集 你可以按 任意顺序 返回解集 示例 1 输入 nums 1 2 3 输出 1 2 1 2 3 1 3 2 3 1 2 3 1 l
  • libgdx导入blender模型

    具体就是参考 官网 https libgdx com wiki graphics 3d importing blender models in libgdx blender 教程可以看八个案例教程带你从0到1入门blender 已完结 这里