Axiom 3D Engine

An open-source, cross-platform, managed 3D rendering engine for DirectX, XNA and OpenGL running on .Net and Mono

开源,跨平台,支持多种渲染方法的3D引擎,可以运行于.Net和Mono平台,支持Dx3d,XNA,OpenGL

Orge3D的.Net版,我没有看过他的源码,但貌似就是用C#写的Orge.

Texture:

Basic, Multi-texturing, Bumpmapping, Mipmapping, Volumetric, Projected:

  • Support for a variety of image formats, including .png, .jpg, .gif, .tga, with dynamic MipMap generation. .dds files are supported for 2D, Volume, and Cubic textures in both DirextX AND OpenGL via DevIL.
  • 1D, 2D, Cubic, and Volume textures.

Shader:

Vertex, Pixel, High Level:

  • Vertex/Fragment programs, including Cg and HLSL high level plugins, as well as support for loading ASM shaders
  • Vertex/Fragment programs are also fully configurable in the material files, and allow for parameters that instruct the engine to track various states and supply them automatically to the program parameters, such as worldviewproj_matrix, light_position_object_space, camera_position_object_space, etc.
  • Support profiles at present are: * DirectX 8 - vp_1_1, ps_1_1 - ps_1_4 * DirectX 9 - vp_2_0, ps_2_0 * OpenGL - arbvp1, arbfp1, fp20 (GeForce3/4 Register and Texture Combiners supported via nvparse), vp30/fp30 (GeForceFX).

Scene_Management

General, BSP, Octrees, LOD:

  • Extensible Hierarchical Scene Graph
  • Octree scene manager plugin which includes a basic heightmap loading scene manager

Animation:

Keyframe Animation, Skeletal Animation:

  • Skeletal animation with an Ogre .skeleton file loader. Features include multiple bone assignments per vertex, smooth frame rate scaled blending, and multiple animations can be blended together to allow for seamless animation transitions.
  • Pose animation allowing for facial animations and more.
  • Allows animations to be assigned to nodes in the scene graph, allowing objects to move along predefined spline paths.

Mesh:

Mesh Loading, Skinning, Progressive:

  • Fast Mesh loader support the Ogre .mesh file formats 1.10 and 1.20, now including pre generated LOD levels based on the entitie's distance from the camera.
  • Exporters for various 3D Modeling programs, including Milkshape and 3dx Max can be downloaded from the Ogre downloads page

Special Effect:

Environment Mapping, Billboarding, Particle System, Sky, Fog, Mirror:

  • Spherical environment mapping
  • Particle systems, extendable via plugins for defining new Emitters and Affectors and definable through Ogre particle scripts.
  • Support for skyboxes via cubic textures, and sky planes.
  • 2d billboard support, with built in pooling to reduce runtime overhead. Supports sprites, and is also used for the particle system.
  • Post-process compositor effects for HDR, Bloom, Motion Blur etc.

Rendering:

Fixed-function, Render-to-Texture, Fonts, GUI:

  • Extensible render system support, via plugins. Current implementations include Tao for OpenGL, and Managed DirectX 9, Xna is under development.
  • Virtual hardware vertex/index buffer interface, allowing for faster rendering of primitives by placing geometry data in video AGP memory, eliminating the need for keeping it in application memory and copying it over every frame.
  • Support for Ogre .material files, allowing the flexibility for controlling fixed function render state on a per object basis, in addition to specifying texture blending and texture effects such as scrolling and rotating.
  • Smart rendering pipeline, with sorting designed to reduce render state changes as much as possible. Transparent objects are also sorted to allow blending into the scene correctly.
  • Font bitmap support using the Ogre .fontdef format for loading bitmaps based and dynamically generated font bitmaps.

程序基本步骤:

  1. Create the Root object.
  2. Define the resources that the application will use.
  3. Choose and set up the render system (that is, DirectX, OpenGL, etc).
  4. Create the render window (the window which Axiom will render onto).
  5. Initialize the resources that you are going to use.
  6. Create a scene using those resources.
  7. Set up any third party libraries and plugins.
  8. Create frame listeners.
  9. Start the render loop.

定义资源

资源包括 textures, models, scripts, 等等. . Thus far we have been using EngineConfig.xml to define Resource paths.
通过 ResourceGroupManager class 来新增资源路径:

1.ResourceGroupManager.Instance.AddResourceLocation(location, type, group);

第一个参数是 文件夹名字.

第二参数是资源类型: "Folder" (文件夹) or "Zip"
(压缩包).

第三参数,资源组.

1.ResourceGroupManager.Instance.AddResourceLocation("Media", "Folder", "General");

选择渲染系统

1.root.RenderSystem = root.RenderSystems["DirectX9"];

选项有 DirectX9, OpenGL, and Xna.

1.Root.Instance.RenderSystem.ConfigOptions["Video Mode"].Value = "1280 x 720 @ 32-bit color";

这里有些共有设定:

Name Purpose
Video Mode Sets resolution and color-depth.颜色深度
Full Screen Sets whether to use the full screen.是否全屏
VSync Syncs FPS to monitors refresh rate,垂直同步
Anti-Aliasing Gives the appearence of smoother edges.抗锯齿
Floating-Point mode 浮点模式,平滑或则快速

创建一个渲染窗口.

1.RenderWindow window = root.Initialize(true, "Window Title");

第一个参数:是否创建窗口.如果true,就会创建.

1.RenderWindow window = root.CreateRenderWindow("Axiom Render Window", 800, 600, false);
不创建窗口,而用winform窗口,就用下面的代码.
Axiom.Collections.NamedParameterList paramList = new Axiom.Collections.NamedParameterList();

paramList["externalWindowHandle"] = pictureBox1.Handle;
Axiom.Graphics.RenderWindow window = _Root.CreateRenderWindow("RenderWindow", pictureBox1.Width, pictureBox1.Height, false, paramList);

Axiom3D学习日记 0.Axiom基础知识的更多相关文章

  1. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  2. FreeRTOS学习笔记——FreeRTOS 任务基础知识

    RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建 ...

  3. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

  4. Axiom3D学习日记 3.Cameras, Lights, and Shadows

    Camera 相机: 相机基础知识不写了,需要注意的是:axiom目前不支持同时操作多个相机. 创建,设置位置基本操作. _camera = _scene.CreateCamera("Mai ...

  5. Web学习篇之---html基础知识(一)

    html基础知识(一) 本篇文章主要介绍HTML头部所包括的信息. 一.下面都是在标签<head>...</head>之间的内容: 1.<title>-</t ...

  6. 学习 FPGA之前的基础知识

    在学习一门技术之前往往应该从它的编程语言入手,比如学习单片机时,往往从汇编或者C语言入门.所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的.但小编认为,若能先结合& ...

  7. Web学习篇之---css基础知识(一)

    css基础知识(一) 1.css样式: 载入css样式有下面四种: 1).外部样式 2).内部样式 3).行内样式 4).导入样式 <link href="layout.css&quo ...

  8. Vue 2.0入门基础知识之全局API

    3.全局API 3-1. Vue.directive 自定义指令 Vue.directive用于自定义全局的指令 实例如下: <body> <div id="app&quo ...

  9. 学习OpenStack之 (0):基础知识

    vi 方向键出现字母问题解决方法 执行命令 sudo apt-get remove vim-common 执行命令 sudo apt-get install vim 鼠标被virtualbox捕获无法 ...

随机推荐

  1. The state of binary data in the browser

    The state of binary data in the browser Or: "So you wanna store a Blob, huh?" TL;DR Don't ...

  2. 从零开始制作jffs2文件系统

    JFFS2 是一个开放源码的项目(www.infradead.org). 它是在闪存上使用非常广泛的读/写文件系统,在嵌入式系统中被普遍的应用. 1.       安装mkfs工具 MTD主页:htt ...

  3. Netty实现服务端客户端长连接通讯及心跳检测

    通过netty实现服务端与客户端的长连接通讯,及心跳检测.        基本思路:netty服务端通过一个Map保存所有连接上来的客户端SocketChannel,客户端的Id作为Map的key.每 ...

  4. Haskell函数的语法

    本章讲的就是 Haskell 那套独特的语法结构,先从模式匹配开始.模式匹配通过检查数据的特定结构来检查其是否匹配,并按模式从中取得数据. 在定义函数时,你可以为不同的模式分别定义函数本身,这就让代码 ...

  5. unity3d Realistic eye shading 真实的眼睛渲染

    先放上效果 人皮都做了,当然要来研究下眼睛,眼睛要比人体皮肤简单一些(实时模拟人皮在此) 一看是不是很复杂 这是眼睛的解构,但是,我们只需要模拟出虹膜巩膜和角膜就能达到相当真实的眼睛 巩膜就是白眼球 ...

  6. Java---网络蜘蛛-网页邮箱抓取器~源码

    刚刚学完Socket,迫不及待的做了这个网页邮箱抓取~~~ 现在有越来越多的人热衷于做网络爬虫(网络蜘蛛),也有越来越多的地方需要网络爬虫,比如搜索引擎.资讯采集.舆情监测等等,诸如此类.网络爬虫涉及 ...

  7. Bzoj 2588: Spoj 10628. Count on a tree 主席树,离散化,可持久,倍增LCA

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2588 2588: Spoj 10628. Count on a tree Time Limit ...

  8. 《University Calculus》-chape5-积分法-积分的定义

    这一章节讨论积分的定义以及微积分基本定理. 笔者先前在数学证明专栏中关于高斯定理的证明的开头,给出了一段关于微积分思想的概括,文中提到根据导数(微分)的定义,根据其逆定义来给出积分的定义和计算方法,这 ...

  9. ExtJs 4: How To Add Grid Cell Tooltip

    最近忙一个项目的时候需要实现鼠标移到grid的某一行上提示消息.花了半天时间才解决.在网上找很久终于有找到一个有用的.我的版本是extjs4. 效果如图 Ext.onReady(function () ...

  10. 开发期间的GWT设置---加快编译速度

    随着项目功能的完善,GWT模块(Module)越来越多,当要以web模式编译给测试组使用时,编译的总时间越来越多,我的机器编译完8个模块,需要10分钟左右. 抽空研究了一下GWT的编译参数和GWT编译 ...