Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты C++

Закрытая тема
 
Опции темы
Старый 24.02.2010, 09:31   #91
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: HxEngine

функцию просчёта Inverse Kinematic для скелета
откуда спер?)
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Старый 24.02.2010, 09:53   #92
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений
(для 142 пользователей)
Ответ: HxEngine

Сообщение от Mr_F_ Посмотреть сообщение
откуда спер?)
Былобы чего и откуда переть... Вобщем в Blender есть IK Solver.
(Offline)
 
Старый 24.02.2010, 17:47   #93
Dream
быдло
 
Регистрация: 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
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 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));
Миниатюры
Нажмите на изображение для увеличения
Название: SampleTransparency.jpg
Просмотров: 830
Размер:	204.2 Кб
ID:	9280  
(Offline)
 
Старый 25.02.2010, 08:48   #95
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений
(для 142 пользователей)
Ответ: HxEngine

Cделал фонувую загрузку ресурсов,щас вот стриминг текстур делаю...
(Offline)
 
Старый 26.02.2010, 01:45   #96
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений
(для 142 пользователей)
Ответ: HxEngine

Cекретные разработки
Миниатюры
Нажмите на изображение для увеличения
Название: CRK.jpg
Просмотров: 838
Размер:	345.6 Кб
ID:	9307  
(Offline)
 
Эти 4 пользователя(ей) сказали Спасибо Igor' за это полезное сообщение:
Android (26.02.2010), Fatalix3d (22.06.2010), Nex (26.02.2010), Randomize (26.02.2010)
Старый 28.02.2010, 18:07   #97
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений
(для 142 пользователей)
Ответ: HxEngine

Мышинка
Тестировал загрузку кубмап,и хелперы. Думаю вот заставить её ездить.
Миниатюры
Нажмите на изображение для увеличения
Название: Dodge(5).jpg
Просмотров: 807
Размер:	91.8 Кб
ID:	9369  
(Offline)
 
Сообщение было полезно следующим пользователям:
Fatalix3d (22.06.2010)
Старый 08.03.2010, 03:06   #98
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений
(для 142 пользователей)
Ответ: HxEngine

Пишу расширения для движка GameEngine,который будет базироватся на Server-Client cистеме,готов мастер сервер.
(Offline)
 
Старый 29.03.2010, 17:28   #99
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 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)
 
Сообщение было полезно следующим пользователям:
Данил (24.04.2010)
Старый 29.03.2010, 21:41   #100
FDsagizi
Бывалый
 
Аватар для FDsagizi
 
Регистрация: 04.01.2008
Адрес: Казахстан \ Талдыкорган
Сообщений: 659
Написано 170 полезных сообщений
(для 509 пользователей)
Ответ: HxEngine

Принимать напрямую сообщения от OIS -а не лучшая идея т.к. не возможность юзать из под редактора это раз - оис не садиться на панели редакторов, и 2 - потом нужно будет переделывать так чтобы можно было выставлять свои кнопки на события...
__________________
Жизнь как говориться игра- делать игры моя профессия(с)

Программирование, это религия! Её нужно исповедовать.
(Offline)
 
Старый 29.03.2010, 22:51   #101
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений
(для 142 пользователей)
Ответ: HxEngine

Сообщение от FDsagizi Посмотреть сообщение
Принимать напрямую сообщения от OIS -а не лучшая идея т.к. не возможность юзать из под редактора это раз - оис не садиться на панели редакторов, и 2 - потом нужно будет переделывать так чтобы можно было выставлять свои кнопки на события...
1) На Qt панели\окна OIS спокойно инициализируется.
2) Не вижу проблемы.
3) Редактор на GUI движка - MyGUI,что даже дает буст в быстродействии редактора.
(Offline)
 
Старый 29.03.2010, 22:59   #102
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 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
FDsagizi
Бывалый
 
Аватар для FDsagizi
 
Регистрация: 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
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений
(для 142 пользователей)
Ответ: HxEngine

Сообщение от FDsagizi Посмотреть сообщение
MyGUI Как гуи для редактора не очень здоровая идея - в нем нету многих мелочей типа, там нежу нормального - TreeView, даже банально иконки поставить в элементы List не получиться...

Хотя версия 4,0 гуи, обесчает быть крутой - но это нужно жадть и то не факт.
Ну я переодически общаюсь с разработчиками,недавно специально по моей просьбе my.name допилил плагин веб браузера.
(Offline)
 
Старый 02.04.2010, 02:20   #105
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 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)
 
Закрытая тема


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:36.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com