为了更好的学习FBX SDK中的一些操作,从sample代码入手是效率最高的方法之一。这里我们使用sample中的ViewScene作为学习fbx sdk的第一个项目对象。

在之前的sdk配置的基础上,配置好GL相关文件,包括include,lib以及bin文件在环境变量下的目录,如果不了解具体配置方法,可搜索opengl配置的相关博客。

在配置好后,将ViewScene的源文件以及fbx文件拷贝到你的fbx sdk的根目录下,并添加到项目中,如下所示:

程序运行如下所示:

该项目是一个对fbx文件场景以及动画的显示程序。程序能够更改光照渲染模式,摄像机角度等。

该程序的基本结构如下所示:

Main: 

SceneContext * gSceneContext; 定义场景的环境

gSceneContext = new SceneContext(!lFilePath.IsEmpty() ? 
        lFilePath.Buffer() : NULL, DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT, lSupportVBO);

SceneContext::SceneContext(const char * pFileName, int pWindowWidth, int pWindowHeight, bool pSupportVBO){}

//初始化SceneContext

初始化结束后,opengl动画开始循环播放。暂时不去了解鼠标键盘以及菜单回调函数的实现细节,直接看显示的回调函数,以了解FBX动画的显示与呈现方式,即:

void DisplayCallback()
{
    gSceneContext->OnDisplay();

glutSwapBuffers();

// Import the scene if it's ready to load.
    if (gSceneContext->GetStatus() == SceneContext::MUST_BE_LOADED)
    {
        // This function is only called in the first display callback
        // to make sure that the application window is opened and a 
        // status message is displayed before.
        gSceneContext->LoadFile();

CreateMenus();

// Call the timer to display the first frame.
        glutTimerFunc((unsigned int)gSceneContext->GetFrameTime().GetMilliSeconds(), TimerCallback, 0);
    }

if( gAutoQuit ) exit(0);
}

蓝色字体为当显示回调函数第一次被执行时才被调用的方法,即LoadFile,createmenus和glutTimerFuncLoadFile基本上就是从场景对象中初始化一系列的三维对象,包括动画,模型等等。

红色代码为每次都会调用的显示代码,并配合计时器显示动画:

进一步研究源代码发现内部的逻辑有点复杂,下面需要进一步学习场景加载的相关知识。

Unity之FBX文件操作学习笔记(二)SDK sample代码初探相关推荐

  1. MonoRail学习笔记二:框架代码下载

    为了更好的学习MonoRail,我准备下载MonoRail的源代码看看. 先从http://www.castleproject.org/castle/download.html 下了一个源代码,结果编 ...

  2. Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用

    Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用 大概要写到结尾了,最后几篇就将手册的各常用命令再看一遍,组合一下,并列举出常见的一些有用的操作. DATA_COLOR_MAP数 ...

  3. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

  4. ROS学习笔记二:探索ROS文件系统

    ROS学习笔记二:探索ROS文件系统 ROS针对自己文件的特性,具有一些自己的工具命令,当针对ROS文件进行操作的时候是非常方便的.这些命令和ubuntu系统原有的命令相似但却不同,单独针对ROS文件 ...

  5. 用ajax做级联操作,学习笔记之MVC级联及Ajax操作

    由于刚转型到MVC,MVC的架构模式很多不是很清楚,比如今天就想做个级联的操作,因为之前的ASP.NET的方式是通过:控件-->添加事件-->后台编写级联事件进行触发,但是这个MVC就不同 ...

  6. 从滚动条到画布的几个代码文件——Python学习笔记之十七

    从滚动条到画布的几个代码文件--Python学习笔记之十七 这一章的继续学习,比在前的照片涉及代码要轻松一些,代码打完后的预期结果总能实现.特别让人欣慰的一点,文本上的文字理解好像上了一个台阶,不用多 ...

  7. Unity API常用方法和类学习笔记1

    Unity API常用方法和类学习笔记1 ------主要构架(Unity-Engine.GameObject.Component) 事件 一.事件执行顺序 二.测试代码 using System.C ...

  8. 华清远见fs4412开发板学习笔记(二)

    fs4412开发板学习笔记(二) Linux 1.终端操作 1)打开终端 ctrl + alt + t 2)放大 ctrl + shift + "+" 3)缩小 ctrl + &q ...

  9. [MyBatis学习笔记] 二、Mybatis基本操作及相关标签介绍

    [MyBatis学习笔记] 二.Mybatis基本操作及相关标签介绍 一.Mybatis简介 二.简单的CRUD操作 1.构建SqlSessionFactory (1)编辑mybatis-config ...

  10. css中怎么加入立体模型,CSS学习笔记二:css 画立体图形

    继上一次学了如何去运用css画平面图形,这一次学如何去画正方体,从2D向着3D学习,虽然有点满,但总是一个过程,一点一点积累,然后记录起来. Transfrom3D 在这一次中运用到了一下几种属性: ...

最新文章

  1. 基于微软开源深度学习算法,用 Python 实现图像和视频修复
  2. Science给博士新生的“欢迎”信:5点期望太扎心!
  3. 压缩文件目录 linux,linux_压缩文件及目录
  4. Python之路【第八篇】:Python模块
  5. java search 不能使用方法_elasticsearch(七)java 搜索功能Search Request的介绍与使用...
  6. 11.10/11.11/11.12 安装PHP5 11.13 安装PHP7
  7. IPv6 auto config 原理详解之-----前缀公告
  8. Docker私有仓库搭建与配置
  9. 学习Java的相关知识
  10. kindle的xray怎么用_Xray简单使用教程
  11. 两台服务器之间mysql数据库怎么做同步_mysql数据库占满磁盘导致服务器无法运行...
  12. 分别求两个整数的最大公约数和最小公倍数。_看不懂辗转相除法求最小公约数?以身相许那种哦!...
  13. 基于相干解调法和基于相位比较法的2DPSK数字通信系统 MATLAB Simulink仿真
  14. 如何在excel中单独冻结多行或多列
  15. icafe 同步到主干
  16. Python爬虫爬取豆瓣书籍数据
  17. 数据迁移怎么测,都有哪些步骤?
  18. GSoC 从开始到中选
  19. Spring MVC过滤器-超类 GenericFilterBean
  20. Java 读取word文件的页数

热门文章

  1. xshell6和xftp6的安装
  2. maven命令打jar包
  3. 每个人都应该了解的金融小知识 -- 利率计算
  4. 《漫画算法2》2021全新进阶版来袭!
  5. 计算机二级是高级应用,计算机二级考试之office高级应用
  6. 《Python金融大数据风控建模实战》 第5章 变量编码方法
  7. 基于Labview开发TestStand用户界面时ConnectCommand List
  8. sensor接口之DVP
  9. 计算机怎么应用最小二乘法作图,最小二乘法应用
  10. 我的Qt作品(16)基于机器视觉+运动控制的大视野激光切割机软件