|
24.02.2010, 09:31
|
#91
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: HxEngine
функцию просчёта Inverse Kinematic для скелета
|
откуда спер?)
|
(Offline)
|
|
24.02.2010, 09:53
|
#92
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Сообщение от Mr_F_
откуда спер?)
|
Былобы чего и откуда переть... Вобщем в Blender есть IK Solver.
|
(Offline)
|
|
24.02.2010, 17:47
|
#93
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: HxEngine
Сообщение от Igor'
Добавил класс Debugger,который позволяет включать\отключать отрисовку отладочной информации,такой как скелет,баунб бокс и т.д
Также добавил в класс Mesh функцию просчёта Inverse Kinematic для скелета,функция computeCCD,просчитывает для нужной кости и её родителя(рекурсия) IK,вобщем с помощью неё можно делать спокойно тоже самое что и в дополнении Locomotion для Unity.
|
Охотник сцапал Луиса!
|
(Offline)
|
|
24.02.2010, 23:42
|
#94
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Cделал сеймпл по альфа блендингу,показывает альфа сортировку.
В сцене 6400 полу-прозрачных кубиков с текстурой.
Сам бленд для матереала делается лёгким движением руки:
#define BLEND_ALPHA GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA
material->setAlphaBlend(true,BLEND_ALPHA);
material->setColor(float4(1,1,1,0.5f));
|
(Offline)
|
|
25.02.2010, 08:48
|
#95
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Cделал фонувую загрузку ресурсов,щас вот стриминг текстур делаю...
|
(Offline)
|
|
26.02.2010, 01:45
|
#96
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Cекретные разработки
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Igor' за это полезное сообщение:
|
|
28.02.2010, 18:07
|
#97
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Мышинка
Тестировал загрузку кубмап,и хелперы. Думаю вот заставить её ездить.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.03.2010, 03:06
|
#98
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Пишу расширения для движка GameEngine,который будет базироватся на Server-Client cистеме,готов мастер сервер.
|
(Offline)
|
|
29.03.2010, 17:28
|
#99
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Немного перековырял архитектуру.
Добавил потдержку OpenGL 3.2,теперь матереалы абстрактны,тоесть пишем свой тип матереала для конретных задач и в файле указываем в качестве имя класса матереала,свой:
<Material>
<Class name="StandartMaterial"/>
<DiffuseTexture file="color_map.dds"/>
<Color r="1.0" g="1.0" b="1.0" a="1.0"/>
<Material/>
Также добавлен единый конфигурационый файл:
<Video>
<Width value="1024"/>
<Height value="768"/>
<FullScreen value="0"/>
<MSAA value="None"/>
</Video>
<Texture>
<Filter mode="Linear"/>
<Anistropy level="0.0"/>
<MipStart level="0"/>
</Texture>
<Gui>
<Resource file="core.xml"/>
</Gui>
<Game>
<Title name="Squad Engine"/>
</Game>
Преписан ресурсный менеджер который с лёгкостью позволяет грузить ресурсы в отдельном потоке:
class BackgroundResourceLoader{
public:
SINGLETON(BackgroundResourceLoader);
void add( Resource* resource );
void flush();
};
Но можно и грузить ресурс в текущем потоке юзая макрос:
#define ResourceCache(ResourcePtr,ResourceFile) ResourcePtr->setFileName(ResourceFile); ResourcePtr->load();
Так же интии разделены на два типа просто интития Entity,и RenderableEntity тоесть та которую можно отрисовать.
Теперь и написание приложения немного изменилось,тоесть добавлен абстрактный класс EngineListener,в котором есь виртуальные методы init(),shutdown(),update(),и пару связаных с инпутом.
class EngineListener : public OIS::MouseListener,public OIS::KeyListener
{
public:
EngineListener();
virtual ~EngineListener();
virtual void init();
virtual void shutdown();
virtual void resize( uint width , uint height );
virtual void update( uint fps , float deltaTime );
virtual void minimize();
virtual void maximize();
virtual bool mouseMoved(const OIS::MouseEvent& _arg);
virtual bool mousePressed(const OIS::MouseEvent& _arg, OIS::MouseButtonID _id);
virtual bool mouseReleased(const OIS::MouseEvent& _arg, OIS::MouseButtonID _id);
virtual bool keyPressed(const OIS::KeyEvent& _arg);
virtual bool keyReleased(const OIS::KeyEvent& _arg);
};
Юзается так:
#include "..\Engine\squad.h"
class Game : public Squad::EngineListener{
public:
bool keyPressed(const OIS::KeyEvent& _arg){
if( _arg.key == OIS::KC_ESCAPE )
Squad::Engine::getInstance().exit();
return Squad::EngineListener::keyPressed(_arg);
}
};
void main(){
Squad::Engine* engine = Squad::Engine::getInstancePtr();
engine->init(new Game,"");
engine->main();
engine->shutdown();
}
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.03.2010, 21:41
|
#100
|
Бывалый
Регистрация: 04.01.2008
Адрес: Казахстан \ Талдыкорган
Сообщений: 659
Написано 170 полезных сообщений (для 509 пользователей)
|
Ответ: HxEngine
Принимать напрямую сообщения от OIS -а не лучшая идея т.к. не возможность юзать из под редактора это раз - оис не садиться на панели редакторов, и 2 - потом нужно будет переделывать так чтобы можно было выставлять свои кнопки на события...
__________________
Жизнь как говориться игра- делать игры моя профессия(с)
Программирование, это религия! Её нужно исповедовать.
|
(Offline)
|
|
29.03.2010, 22:51
|
#101
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Сообщение от FDsagizi
Принимать напрямую сообщения от OIS -а не лучшая идея т.к. не возможность юзать из под редактора это раз - оис не садиться на панели редакторов, и 2 - потом нужно будет переделывать так чтобы можно было выставлять свои кнопки на события...
|
1) На Qt панели\окна OIS спокойно инициализируется.
2) Не вижу проблемы.
3) Редактор на GUI движка - MyGUI,что даже дает буст в быстродействии редактора.
|
(Offline)
|
|
29.03.2010, 22:59
|
#102
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Поповоду второго:
#include "..\Engine\squad.h"
typedef void (*KeyAction)();
static KeyAction keyBind[240]; // всего OIS потдерживает 237 клавиш,округлил.
void ExitAction(){
Squad::EnginePtr()->exit();
}
class Game : public Squad::EngineListener{
public:
bool keyPressed(const OIS::KeyEvent& _arg){
if( keyBind[_arg.key] != 0 )
keyBind[_arg.key]();
return Squad::EngineListener::keyPressed(_arg);
}
};
void main(){
memset(keyBind,0,sizeof(keyBind));
keyBind[OIS::KC_ESCAPE] = ExitAction;
Squad::Engine* engine = Squad::Engine::getInstancePtr();
engine->init(new Game,"");
engine->main();
engine->shutdown();
}
|
(Offline)
|
|
30.03.2010, 07:10
|
#103
|
Бывалый
Регистрация: 04.01.2008
Адрес: Казахстан \ Талдыкорган
Сообщений: 659
Написано 170 полезных сообщений (для 509 пользователей)
|
Ответ: HxEngine
Сообщение от Igor'
1) На Qt панели\окна OIS спокойно инициализируется.
2) Не вижу проблемы.
|
Значит это была проблема именно с огром....
3) Редактор на GUI движка - MyGUI,что даже дает буст в быстродействии редактора.
|
MyGUI Как гуи для редактора не очень здоровая идея - в нем нету многих мелочей типа, там нежу нормального - TreeView, даже банально иконки поставить в элементы List не получиться...
Хотя версия 4,0 гуи, обесчает быть крутой - но это нужно жадть и то не факт.
__________________
Жизнь как говориться игра- делать игры моя профессия(с)
Программирование, это религия! Её нужно исповедовать.
|
(Offline)
|
|
30.03.2010, 08:49
|
#104
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Сообщение от FDsagizi
MyGUI Как гуи для редактора не очень здоровая идея - в нем нету многих мелочей типа, там нежу нормального - TreeView, даже банально иконки поставить в элементы List не получиться...
Хотя версия 4,0 гуи, обесчает быть крутой - но это нужно жадть и то не факт.
|
Ну я переодически общаюсь с разработчиками,недавно специально по моей просьбе my.name допилил плагин веб браузера.
|
(Offline)
|
|
02.04.2010, 02:20
|
#105
|
ПроЭктировщик
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений (для 142 пользователей)
|
Ответ: HxEngine
Теперь рендеринг карты глубины и шедоумап ещё проще:
class World : public BaseWorld{
public:
World();
virtual ~World();
virtual void clear();
virtual void addEntity( Entity* entity );
virtual void addRenderableEntity( RenderableEntity* entity );
virtual const Vector<Entity*>* getEntityList()const;
virtual void removeEntity( Entity* entity );
virtual void removeRenderableEntity( RenderableEntity* entity );
virtual const Vector<RenderableEntity*>* getRenderableEntityList()const;
virtual void update( float delta );
// normal sorted rendering
virtual void renderFrontToBack( Camera* camera );
virtual void renderBackToFront( Camera* camera );
// normal rendering with sort for alpha blend
virtual void render( Camera* camera , bool sort = true );
// depth only rendering
virtual void renderDepth( Camera* camera );
// shadow depth rendering
virtual void renderShadowDepth( Camera* camera );
protected:
Vector<Entity*> entities;
Vector<RenderableEntity*> renderable_entities;
};
Теперь "мир" имеет методы renderDepth,и renderShadowDepth,renderShadowDepth отличается от renderDepth тем что отрисовываются только те интиии у которых флаг ShadowCaster равен true.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:04.
|