关于GLSL在GLFW里的使用(windows平台,使用mingw),我们的目标是使用着色器:
// vertex void main() { gl_Position = gl_Vertex; } //fragment void main(void) { gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); }
来绘制一个蓝色的矩形。
由于sf里的GLEW编译好的版本是vc的,所以要用mingw自己再编译下。
然后我们的main.cpp
#include <GL/glew.h> #include <GL/glfw.h> #include <stdlib.h> #include <iostream> #include <fstream> unsigned int shader_id; unsigned int shader_vp; unsigned int shader_fp; char* textFileRead(const char *fileName) { char* text; if (fileName != NULL) { [...]
前些日子一直想给引擎实现骨骼动画支持,当时选择md5作为解析模型目标,然后找到不少资料加上gara的例子,很快有了进展。
但最后发现md5解析没问题,但是得到目标骨骼动画逻辑数据的部分,如果按md5的逻辑实现的话,会破坏已有的骨骼动画抽象部分,不利于骨骼动画部分通用。我们打算取消md5模型的解析计划,准备转向现在更“流行”的collada格式,看起来很不错,应用也比较广泛。不过在开始实现前,我打算将引擎mesh的geometry部分再重新修改下,取消之前的vertex,triangle类抽象,将其改为简单的数组来存储:triangleIndices,vertexPositions,vertexNormals,vertexTangents,vertexBinormals,uvs,uvIndices。可以提高数据向VertexBuffer3D/IndexBuffer3D上传时的cpu消耗,使引擎效率更高。
这样,下一版本也就是1.4.2的发布版,会是geometry修改的效率提高版。
而collada解析的支持会在1.4.2之后的发布版中实现。
关注nest3d的朋友,在这里向大家倒个歉 T.T 引擎的更新一直比较慢。并且由于时间原因而且一些技术我们也是现学现用,所以开发效率比较低,不过为了引擎更加完美,我认为这些等待都是值得的
good day
你好,我非常荣幸向大家介绍nest3d的最新版本.
在这个发行版里,我们引进一个新的非常灵活的 渲染流程 的设计。
process0 = new ContainerProcess(camera1, container0); process0.meshProcess = new BasicMeshProcess(camera1); process0.color = 0xff000000; process1 = new ContainerProcess(camera, container1); process1.meshProcess = new BasicMeshProcess(camera); process1.color = 0xffffffff; view.processes.push(process0, process1);
我们可以很容易实现RTT(Render To Texture)效果。
process0.renderTarget.texture = material.diffuse.texture;
也很容易添加后期处理效果。
process0 = new ContainerProcess(camera, container); process0.meshProcess = new BasicMeshProcess(camera); process0.color = 0xff000000; var effect:RadialBlur [...]
Hey all, i’m glad to announce the new release of nest3d.
You may want to check out some demos first And feel free to grab it’s source.
In this release, we introduced a new design of render pipeline which is flexible.
process0 = new ContainerProcess(camera1, container0); process0.meshProcess = new BasicMeshProcess(camera1); process0.color = 0xff000000; [...]
ImageBox is a batch image file converter.
With the help of FreeImage library.
He can transform jpg,png,bmp,tga,tif files with specific scale value.
Hi, i’d like to show you how to initialize the engine.
Make sure your version is 1.3,go and download it here。
And make sure your build target is greater than flash player 11.3
private var controller:CameraController;
CameraController is the bridge from user to the camera,he controls camera with mouse&keyboard events,his keyboard event stores data to [...]
本节,我向大家介绍Mesh的衣服,Material。
所有的材质集中在nest.view.materials.* 包下,包含:
ColorMateiral, TextureMaterial, EnvMapMaterial, SkyBoxMaterial, LightmapMaterial, MovieMaterial
public function ColorMaterial(color:uint = 0xffffff, alpha:Number = 1) {
你只要提供你需要的颜色和透明度即可
注意透明度要在场景里起作用,你得设置mesh的混合模式,并更换场景的Manager为AlphaManager进行透明排序,记得打开mesh.alphaTest参数,具体我会在以后的章节里提到。
一般材质都提供光照,你可以通过material.light进行设置
当你设置好你的材质后,需要调用material.update()函数来更新生成正确的供stage3d使用的资源。
public function TextureMaterial(diffuse:BitmapData, specular:BitmapData = null, glossiness:int = 10, normalmap:BitmapData = null) {
必须提供diffuse图像,然后specular和normalmap是可选项,glossiness是specular的参数。
还有material.kill:Number选项,使用agal代码kill进行像素剔除,而material.kill的值就是到时候像素的透明度分量要减去的值(当kill后的参数小于零,像素就被剔除)
public function EnvMapMaterial(cubicmap:Vector.<BitmapData>, reflectivity:Number, diffuse:BitmapData, specular:BitmapData = null, glossiness:int = 10, normalmap:BitmapData = null) {
必须提供cubicmap(就是环境的六个面),和diffuse贴图,继承于TextureMaterial,reflectivity控制环境图和diffuse图所占的比例,应在1-0之间。
public function SkyBoxMaterial(cubicmap:Vector.<BitmapData>) [...]
这一节,我为大家介绍对Mesh的控制。
Mesh继承于Object3D,实现了IMesh接口。
用户可以用它来显示物体,对物体进行控制。
基本控制:
mesh.position:Vector3D
mesh.rotation:Vector3D
mesh.scale:Vector3D
用这些进行基本移动旋转缩放,然后可以用 mesh.orientation 来设置旋转的存储方式。
包含 轴角,四元数,欧拉角三种方式。
我们还提供了nest.object.geom.Quaternion 静态类提供四元数的基本操作。
当你修改了上面信息后,你可以标记mesh.changed = true,让mesh在渲染的时候再把这些信息写到矩阵里,或者用mesh.recompose()来立即写入。
你也可以通过mesh.matrix:Matrix3D来控制Mesh的变换。
mesh.worldMatix, invertWorldMatrix, invertMatrix都是用来运算的,再每一帧都会更新。
Mesh还提供了translate()方法,让mesh按指定轴进行平移。
大家好,本节我将向大家介绍下引擎的初始化部分。
首先确认您的引擎版本是1.3,可以到这里下载。
然后确认您的开发环境是生成flash player11.3以上的设置。
private var controller:CameraController;
CameraController用来让我们和场景进行交互,通过键鼠事件,他的按键事件是使用Array存储的,并且是public的getter,所以您可以用它来监听您自己的按键事件。
public function HelloWorld() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.frameRate = 60; EngineBase.stage = stage; EngineBase.stage3d = stage.stage3Ds[0]; EngineBase.camera = new Camera3D(); EngineBase.root = new Container3D(); EngineBase.manager = new BasicManager(); EngineBase.view = new ViewPort(800, 600); EngineBase.view.culling = new BasicCulling(); addChild(EngineBase.view.diagram); controller = new CameraController(); controller.mouseEnabled [...]
Finally, the 1.2 version of nest3d is released.
Features like 3d-mouse-event, post-effect processing, 3ds, ms3d static model loader and more …
check it out now!
