//Terrain 3d level using The Irrlicht 3d engine
//Copyright 2006 Alvaro F. Celis "afecelis"
//-----------------------------------------------------------------------------------------------//
#include <irrlicht.h>
#include <iostream>
#include <stdio.h>
#include <wchar.h>
//-----------------------------------------------------------------------------------------------//
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
//-----------------------------------------------------------------------------------------------//
//pragma acomments
//#pragma comment(lib, "Irrlicht.lib")
//-----------------------------------------------------------------------------------------------//
bool quit=false;
//-----------------------------------------------------------------------------------------------//
//add my event receiver
class MyEventReceiver : public IEventReceiver
{
public:
virtual bool OnEvent(SEvent event)
{
if (event.EventType==irr::EET_KEY_INPUT_EVENT)
{
switch(event.KeyInput.Key)
{
case (KEY_KEY_Q) :
case (KEY_ESCAPE) :
quit=true;
return true;
break;
}
}
return false;
}
};
//-----------------------------------------------------------------------------------------------//
// create receiver
MyEventReceiver receiver;
//-----------------------------------------------------------------------------------------------//
//main
int main()
{
IrrlichtDevice *device = 0;
device = createDevice(video:: EDT_OPENGL , core::dimension2d<s32>(800, 600), 32, false,true,false,&receiver);
//-----------------------------------------------------------------------------------------------//
//pointers
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();
//-----------------------------------------------------------------------------------------------//
//driver->setFog(SColor(0,50,50,150),true, 0,4000); //fog color-final values= amount of fog, distance
driver->setTextureCreationFlag(video::ETCF_ALWAYS_32_BIT, true);
//-----------------------------------------------------------------------------------------------//
//wasd navigation
SKeyMap keyMap[8];
keyMap[1].Action = EKA_MOVE_FORWARD;
keyMap[1].KeyCode = KEY_KEY_W;
keyMap[3].Action = EKA_MOVE_BACKWARD;
keyMap[3].KeyCode = KEY_KEY_S;
keyMap[5].Action = EKA_STRAFE_LEFT;
keyMap[5].KeyCode = KEY_KEY_A;
keyMap[7].Action = EKA_STRAFE_RIGHT;
keyMap[7].KeyCode = KEY_KEY_D;
//-----------------------------------------------------------------------------------------------//
//fps cam
scene::ICameraSceneNode* camera = 0;
//camera = smgr->addCameraSceneNodeFPS();
camera = smgr->addCameraSceneNodeFPS(0,80.0f,300.0f,-1, keyMap, 8); //1st value= obligatory 0-2nd value= mouse sensitivity-3rd value handles cam speed
camera->setPosition(core::vector3df(0,200,0));
camera->setFarValue ( 50000.0f ) ; //sets the distance for the clipping plane, the bigger the farther
camera->setFOV(1.1f); // a value of 0.5 makes it look alienish
//camera->setRotation(core::vector3df(0,0,0)); //rotate the camera x,y,z degrees
//-----------------------------------------------------------------------------------------------//
// create sky box
scene::ISceneNode* skyboxNode = smgr->addSkyBoxSceneNode(
driver->getTexture("./data/desert_up.jpg"),
driver->getTexture("./data/desert_dn.jpg"),
driver->getTexture("./data/desert_lf.jpg"),
driver->getTexture("./data/desert_rt.jpg"),
driver->getTexture("./data/desert_ft.jpg"),
driver->getTexture("./data/desert_bk.jpg"));
//-----------------------------------------------------------------------------------------------//
//add 3d terrain
scene::IAnimatedMesh* terrain = 0;
terrain = smgr->getMesh("./data/terrain.x");
//-----------------------------------------------------------------------------------------------//
//terrain node
scene::IAnimatedMeshSceneNode* terrainnode = 0;
terrainnode = smgr->addAnimatedMeshSceneNode(terrain);
//terrainnode = smgr->addAnimatedMeshSceneNode(terrain, camera, -1);//parents node to camera
terrainnode->setScale(vector3df(100,100,100));
terrainnode->setPosition(core::vector3df(0,0,0));
terrainnode->setRotation(core::vector3df(270,0,0));
//terrainnode->setMaterialTexture(0, driver->getTexture("./data/patchy.jpg"));
terrainnode->setMaterialFlag(video::EMF_LIGHTING, false);
terrainnode->setMaterialFlag(EMF_BACK_FACE_CULLING,false);
//terrainnode->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR); //makes it transparent
//terrainnode->getMaterial(0).EmissiveColor.set(0,255,255,255); //makes it emissive
terrainnode->setDebugDataVisible(true);
//terrainnode->setMaterialFlag(video::EMF_WIREFRAME,true);
//terrainnode->setMaterialFlag(EMF_FOG_ENABLE,true); //enables fog
//-----------------------------------------------------------------------------------------------//
// disable mouse cursor
device->getCursorControl()->setVisible(false);
//-----------------------------------------------------------------------------------------------//
//draw everything
int lastFPS = -1;
while(device->run()&&!quit)
{
driver->beginScene(true, true, video::SColor(0,60,60,60));
smgr->drawAll();
//-----------------------------------------------------------------------------------------------//
//finish drawing
driver->endScene();
int fps = driver->getFPS();
if (lastFPS != fps)
{
wchar_t tmp[1024];
swprintf(tmp, 1024, L"Terrain Test Level (fps:%d) Triangles:%d",
fps, driver->getPrimitiveCountDrawn());
device->setWindowCaption(tmp);
lastFPS = fps;
}
}
device->drop();
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
BLENDER 制作的地形例子,含资源文件
共13个文件
jpg:7个
x:1个
cpp:1个
5星 · 超过95%的资源 需积分: 49 90 下载量 28 浏览量
2009-09-07
16:55:35
上传
评论 5
收藏 1.68MB ZIP 举报
温馨提示
Blender的安装后所占空间很少以及可以运行于不同的平台。虽然它经常不连说明文档或范例发布,但其拥有极丰富的功能,而且很大部份是高端模组塑造软体。其特性有: 支持不同的几何图元,包括多边形网纹,快速表层塑模,曲线及向量字元。 多用途的内部洵染及整合YafRay这个开源的射线追踪套件。 动画工具,包括了反向动作组件,可设定骨干,结构变形,关键影格,时间线,非线性动画,系统规定参数,顶点量重及柔化动量组件,包括网孔碰撞侦察和一个具有侦察碰察的粒子系统。 使用Python语言来创作及制作游戏及工作自动化脚本。 基本的非线性影像编辑及制作功能。 Game_Blender,一个子计划,用以制作实时的电脑游戏。
资源推荐
资源详情
资源评论
收起资源包目录
blender_terrain.zip (13个子文件)
terrain
main.cpp 6KB
QUICK TERRAIN TUTORIAL WITH BLENDER.pdf 773KB
example 1.64MB
data
terrain.x 106KB
desert_up.jpg 13KB
patchy.jpg 49KB
desert_rt.jpg 72KB
desert_ft.jpg 73KB
terrain.blend 122KB
desert_lf.jpg 78KB
desert_bk.jpg 69KB
desert_dn.jpg 121KB
Makefile 205B
共 13 条
- 1
资源评论
- wxbhcg2017-01-23不错不错,正是我需要的,一次性感谢3次,呵呵。
- 王书彦2013-12-19挺好的 对我有用
- starking11112012-09-24看过了,挺不错的。对我这个初学者帮助很大。
- justdoitABC2013-05-07做的挺好的,初学的很好用
- cctiansjtu2013-05-25文件齐全,还有一个开发过程说明,不错。
woshishei0527
- 粉丝: 13
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功