Unity之FBX文件操作学习笔记(二)SDK sample代码初探
为了更好的学习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和glutTimerFunc。LoadFile基本上就是从场景对象中初始化一系列的三维对象,包括动画,模型等等。
红色代码为每次都会调用的显示代码,并配合计时器显示动画:
进一步研究源代码发现内部的逻辑有点复杂,下面需要进一步学习场景加载的相关知识。
Unity之FBX文件操作学习笔记(二)SDK sample代码初探相关推荐
- MonoRail学习笔记二:框架代码下载
为了更好的学习MonoRail,我准备下载MonoRail的源代码看看. 先从http://www.castleproject.org/castle/download.html 下了一个源代码,结果编 ...
- Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用
Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用 大概要写到结尾了,最后几篇就将手册的各常用命令再看一遍,组合一下,并列举出常见的一些有用的操作. DATA_COLOR_MAP数 ...
- pythonsze_python学习笔记二 数据类型(基础篇)
Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...
- ROS学习笔记二:探索ROS文件系统
ROS学习笔记二:探索ROS文件系统 ROS针对自己文件的特性,具有一些自己的工具命令,当针对ROS文件进行操作的时候是非常方便的.这些命令和ubuntu系统原有的命令相似但却不同,单独针对ROS文件 ...
- 用ajax做级联操作,学习笔记之MVC级联及Ajax操作
由于刚转型到MVC,MVC的架构模式很多不是很清楚,比如今天就想做个级联的操作,因为之前的ASP.NET的方式是通过:控件-->添加事件-->后台编写级联事件进行触发,但是这个MVC就不同 ...
- 从滚动条到画布的几个代码文件——Python学习笔记之十七
从滚动条到画布的几个代码文件--Python学习笔记之十七 这一章的继续学习,比在前的照片涉及代码要轻松一些,代码打完后的预期结果总能实现.特别让人欣慰的一点,文本上的文字理解好像上了一个台阶,不用多 ...
- Unity API常用方法和类学习笔记1
Unity API常用方法和类学习笔记1 ------主要构架(Unity-Engine.GameObject.Component) 事件 一.事件执行顺序 二.测试代码 using System.C ...
- 华清远见fs4412开发板学习笔记(二)
fs4412开发板学习笔记(二) Linux 1.终端操作 1)打开终端 ctrl + alt + t 2)放大 ctrl + shift + "+" 3)缩小 ctrl + &q ...
- [MyBatis学习笔记] 二、Mybatis基本操作及相关标签介绍
[MyBatis学习笔记] 二.Mybatis基本操作及相关标签介绍 一.Mybatis简介 二.简单的CRUD操作 1.构建SqlSessionFactory (1)编辑mybatis-config ...
- css中怎么加入立体模型,CSS学习笔记二:css 画立体图形
继上一次学了如何去运用css画平面图形,这一次学如何去画正方体,从2D向着3D学习,虽然有点满,但总是一个过程,一点一点积累,然后记录起来. Transfrom3D 在这一次中运用到了一下几种属性: ...
最新文章
- 基于微软开源深度学习算法,用 Python 实现图像和视频修复
- Science给博士新生的“欢迎”信:5点期望太扎心!
- 压缩文件目录 linux,linux_压缩文件及目录
- Python之路【第八篇】:Python模块
- java search 不能使用方法_elasticsearch(七)java 搜索功能Search Request的介绍与使用...
- 11.10/11.11/11.12 安装PHP5 11.13 安装PHP7
- IPv6 auto config 原理详解之-----前缀公告
- Docker私有仓库搭建与配置
- 学习Java的相关知识
- kindle的xray怎么用_Xray简单使用教程
- 两台服务器之间mysql数据库怎么做同步_mysql数据库占满磁盘导致服务器无法运行...
- 分别求两个整数的最大公约数和最小公倍数。_看不懂辗转相除法求最小公约数?以身相许那种哦!...
- 基于相干解调法和基于相位比较法的2DPSK数字通信系统 MATLAB Simulink仿真
- 如何在excel中单独冻结多行或多列
- icafe 同步到主干
- Python爬虫爬取豆瓣书籍数据
- 数据迁移怎么测,都有哪些步骤?
- GSoC 从开始到中选
- Spring MVC过滤器-超类 GenericFilterBean
- Java 读取word文件的页数