Мой вопрос решён. ссылка http://moldovania.3dn.ru/forum/10-13-1
Ещё вопрос. Как сделать чтобы анимация модели воспроизводилось не бесконечно, а только один раз? Использую setFrameLoop.
Юзаю tumle.
У мя проблема. Есть два АнимэйтедМеша - земля и автомобиль. Автомобиль появляется на 50 единиц выше земли. Пока он падает, setVelocity оказывает действие. Как только тачка падает на землю, она становится недвижима. Оба меша материал - metal
mmgr->addMaterialInteraction(metal, metal, 0.7f, 0.3f, 0.3f, 0.9f);
pCar->setVelocity(vector3df(-20, 0, 0));
Чо делать? В чем трабл?
Два дня назад начал пользоваться ирЕдит 1.4. Сделал просчет лайтмэпов 1024*1024, и сохранил сцену. Сцена это одно медиум-поли дерево, лополи карта и костер. Модели автоматом переконвертились в ирмеш. До этого сцена занимала в памяти метров примерно 10, сейчас занимает 75 + долго грузиться (сравнительно долго). Как это понимать? Это что такой формат кособокий? Модели кстати тоже весят раз эдак в 10 больше.
Основной вопрос: кто как решил эту проблему. Лайтмэпы нужны однозначно, но собирать карты где-нить в 3д Макс крайне неудобно.
FlexoID
вот тут http://flufx.narod.ru/project/crueltrack/index.html в current сделан на tumle. Машинка падает и сползает с горки, и колесо падает и скатывается с горки.. может поможет ^_^'
Доброго всем dd:hh:ss! Пытался связать Ирр с ЛУА в среде Дев-С++. Вот код:
#include <irrlicht.h>
extern "C" {
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
#pragma comment(lib, "Irrlicht.lib")
int main()
{
int width;
int height;
const char* title;
int defaultWidth = 512;
int defaultHeight = 512;
const char* defaultTitle = "GLFW Not Scripted Application";
int frame = 0;
bool running = true;
lua_State* L = lua_open();
luaL_openlibs(L);
if(luaL_dofile(L, "config.lua"))
{
const char* err = lua_tostring(L, -1);
width = defaultWidth;
height = defaultHeight;
title = defaultTitle;
}
else
{
lua_getglobal(L, "windowWidth");
width = (int)lua_tonumber(L, -1);
if(0 == width)
width = defaultWidth;
lua_getglobal(L, "windowHeight");
height = (int)lua_tonumber(L, -1);
if(0 == height)
height = defaultHeight;
lua_getglobal(L, "windowTitle");
title = lua_tostring(L, -1);
if(NULL == title)
title = defaultTitle;
}
IrrlichtDevice *device =
createDevice(EDT_SOFTWARE, dimension2d<s32>(width, height), 16,
false, false, false, 0);
device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");
IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
IGUIEnvironment* guienv = device->getGUIEnvironment();
guienv->addStaticText(L"Hello World! This is the Irrlicht Software renderer!",
rect<int>(10,10,200,22), true);
IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );
if (node)
{
node->setMaterialFlag(EMF_LIGHTING, false);
node->setFrameLoop(0, 310);
node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
}
smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));
while(device->run())
{
driver->beginScene(true, true, SColor(255,100,101,140));
smgr->drawAll();
guienv->drawAll();
driver->endScene();
}
device->drop();
return 0;
}
Всё хорошо но есть загвоздка - когда я пытаюсь сделать такое:
device->setWindowCaption(title);
то выдает ошибку - mainIrr.cpp:62: error: no matching function for call to `irr::IrrlichtDevice::setWindowCaption(const char*&)'. Что нужно правильно сделать?
Спасибо!
Я ща могу тупить сильно, но попробуй при объявлении переменной сделать так.
const wchar_t * title ;
Насколько я помню именно такие переменные принимает setWindowCaption.
Делаю terrain в IrrEdit и всё нормально, но иррлихт в программе ни в какую не хочет его загружать (загружает всё, кроме terrain). Перепробовал всё. Как же это исправить?
Проверь пути до текстур терраина(heightmap, detalmap). Просмотри консольку наверняка твоя прога неможет найти текстуру heightmap (чернобелую карту высот).
Да я перепробовал всё.
Кстати, почему примеры собранные на gcc не идут с DirectX 9,8, а собранные на VS идут на всём?
P.S. на 1.3 такой проблемы небыло
Я dll под gcc с DiretcX ноябрьским собирал. Проблем нет, все работает.
Блин, у меня прога на OGL 2 выдаёт 100 fps, а на DX9 было 300(это плохо, так как на DX ща не пашет).
Это у меня руки кривые или движок такой?
P.S. Основная нагрузка программы на ланшавт.
hero
Странно... Обычно говорят что ОГЛ быстрее ДХ...
@Dampire
к Иррлищту это точно не относится
SofT MANiAC
Дык это и хорошо. Я всеравно под ДХ пишу...
Dampire, кто говорит?
Помоему этот вопрос не разрешён. Что-то лучше выдаёт OGL, что-то лучше DX.
Может быть ещё и от карты с дровами зависит.
Тема в архиве.