Тема: C3D Engine
Показать сообщение отдельно
Старый 03.03.2012, 13:03   #1
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
C3D Engine

обновлено инфо
C3D Engine является легковесным графическим, а в будущем и игровым движком, основанном на DirectX 9.0c использующем в основе визуализации шейдеры. Плотно интегрирован с физикой. Применяется для написания легковесных казуальных игр с наименьшими затратами времени.
Как устроен конвейер визуализации:
Программа -> Менеджер сцены -> Узел сцены -> Сетка -> Подсетка
В свою очередь, при отрисовке подсетки, устанавливаются параметры эффекта – это матрицы world, view, projection не перемноженые, текстура и диффузный цвет материала.
По умолчанию используется встроеный эффект. Можно загрузить и использовать свой.
Эффекты можно применять к сеткам. Этот эффект будет действовать для всех узлов, где применяется сетка. Эффект можно применить отдельно для узла. Эффект можно применить отдельно к материалу сетки, относительно сетки или узла.
Файл эффекта использует предустановленные переменные
matrix WorldMatrix; //абсолютная мировая матрица объекта
matrix ViewMatrix; // матрица вида
matrix ProjMatrix; // матрица проекции
matrix WorldViewProjMatrix; // перемноженая матрица
float4 MatDiffuse; // диффузный цвет материала
texture Tex; //текстура
Для отображения объектов нужно создавать узлы сцены CreateNode(). Потом сетку нужно передать этому узлу NodeAttachMesh(node,mesh); Одна сетка может быть назначена на несколько узлов сцен, поэтому сетку не требуется грузить много раз, например для отображения однотипных объектов.
Можно назначать эффекты и для отдельных узлов NodeSetEffect(node, effect). Эффектам можно задавать стандартные параметры Technique, Matrix, float, int, bool, float array, Texture. Эффекты так же можно назначить на часть объекта NodeSetEffectByMaterialId(node,effect,id)
Узлы сцены могут иметь родителей, при этом все трансформации с узлом производятся локально.
Объектам можно назначать физические тела (на данный момент куб, выпуклая форма и статичекий тримеш), не используйте физику для потомков. Потомки должны создаваться на уровне физики, если вы хотите иметь для них физические свойства.
Можно определять столкновения с объектами (оба объекта должны быть физическими)
На данный момент камера не может быть прикреплена ни к одному объекту, но можно производить перемещения и обзор.
Работа с клавиатурой и мышью.
Работа со скелетной анимацией.
Экспорт анимации нужно производить из 3ds max с помощью плагина panda soft
Разработка ведется одним человеком - мной

Пример простого приложения:
#include <string>
#include "c3dengine.h"
using namespace std;
int main()
{
    
Init(1024,768);
    
CameraSetPosition(0,20,-30);
    
CameraSetTarget(0,0,0);
    
int mesh LoadMesh("tiny\\tiny.x");
    
int node CreateNode();
    
NodeAttachMesh(nodemesh);
    while(
Loop())
    {
        
Cls();
        if(
IsKeyDown(KEY_ESCAPE)) break;
        
Render();        
        
Flip();
    }
    
Drop();
    return 
0;

добавил работу с физикой convex, trimesh, и функции для настройки параметров body
скелетная анимация
оптимизировал всяческие вычисления

СКАЧАТЬ СЕЙЧАС в архиве демо и документация

Последний раз редактировалось pozitiffcat, 07.03.2012 в 15:36.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо pozitiffcat за это полезное сообщение:
4yBa4Ok (03.03.2012), HolyDel (03.03.2012), Mr_F_ (03.03.2012), St_AnGer (03.03.2012)