Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2009, 17:03   #1
MarchenK0
Новичок
Джуниор
 
Регистрация: 14.03.2008
Сообщений: 1
По умолчанию Как вставить объект 3D MAX в Visual C++ 6.5 !?

Подскажите пожалуста кто знает, как вставить объект 3D MAX в Visual C++ 6.5. Нужно чтобы он был видет в окне и можно было обрабатывать событие - клик по этому объекту.
Спасибо, если обратили внимание!!!
MarchenK0 вне форума Ответить с цитированием
Старый 24.02.2009, 18:33   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Прямо из 3D MAX не выйдет. Нужно конвертировать этот объект в х-формат. Потом при помощи функции LoadMeshFromFile загрузить объект в сцену. Ну а потом уже обрабатывать.
Для этого всего вам нужен DirectX SDK.
Примерный код:
Код:
#include <windows.h>
#include <d3d9.h>
#include <d3dx9.h>
#include <d3dx9core.h>
#include <d3dx9mesh.h>
#include <Mmsystem.h>
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
#pragma comment(lib, "Winmm.lib")

ID3DXMesh* pMesh					=NULL;     //переменная которая хранит саму модель
ID3DXBuffer* pMeshBuffer			=NULL;                //буфер, хранящий вершины модели
LPDIRECT3DTEXTURE9* pMeshTexture	=NULL;                           //текстура
D3DMATERIAL9* pMeshMaterials		=NULL;                           //материал
//тут еще надо создать устройство direct3d...
...
HRESULT InitialMesh()       //загрузка модели, материала и текстур
{
	if(FAILED(D3DXLoadMeshFromXA("тут путь к вашему файлу с расширением *.x", D3DXMESH_SYSTEMMEM, pDirect3DDevice, NULL, &pMeshBuffer, NULL, &dwNumber, &pMesh)))
		return E_FAIL;
	D3DXMATERIAL* D3DXMeshMaterials;
	D3DXMeshMaterials=(D3DXMATERIAL*)pMeshBuffer->GetBufferPointer();

	pMeshMaterials=new D3DMATERIAL9[dwNumber];
	pMeshTexture=new LPDIRECT3DTEXTURE9[dwNumber];
	for(DWORD i=0; i<dwNumber; i++)
	{
		pMeshMaterials[i] = D3DXMeshMaterials[i].MatD3D;
		pMeshMaterials[i].Ambient=pMeshMaterials[i].Diffuse;

		if(FAILED(D3DXCreateTextureFromFileA(pDirect3DDevice, D3DXMeshMaterials[i].pTextureFilename, &pMeshTexture[i])))
			pMeshTexture[i]=NULL;
		pMeshBuffer->Release();
		
	}
	return S_OK;
}

VOID DrawMyMesh()          //рисование загруженного объекта
{
	for(DWORD i=0; i<dwNumber; i++)
	{
		pDirect3DDevice->SetMaterial(&pMeshMaterials[i]);
		pDirect3DDevice->SetTexture(0, pMeshTexture[i]);
		pMesh->DrawSubset(i);
	}
}
Более подробно можете почитать в книге Горнаков С.Г. "DirectX 9. Уроки программирования на С++"
MaTBeu вне форума Ответить с цитированием
Старый 27.02.2009, 15:29   #3
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

В аттаче пример загрузки .3ds файла (простейшей, без скелета, анимации и пр). Описания .max формата (новых версий студии) я кстати нигде вообще не нашёл (там надо было недавно по работе).

А вообще если Вам нужно узнать как пишутся те или иные загрузчики, то легче всего скачать какой-нибудь опенсорсный движок и распотрошить его. Там их много обычно разных.
Вложения
Тип файла: zip 3ds.ZIP (419.5 Кб, 104 просмотров)
theos вне форума Ответить с цитированием
Старый 29.11.2009, 08:38   #4
untoshka
Новичок
Джуниор
 
Регистрация: 29.11.2009
Сообщений: 1
По умолчанию

что-то не экспортирует мой 3d max в файл *.x
untoshka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как уничтожить объект в C# Никки Общие вопросы .NET 7 30.10.2014 23:54
программно создать объект "image" (Visual Basic 6.0) Da$aD Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 09.05.2008 18:19
Как передать объект по наследству Legat Win Api 6 03.11.2007 11:19
Как вставить панельку с кнопочками в редактор Delphi/Builder/Visual C++? Brother Win Api 1 02.10.2007 13:35
как внедрить 'объект' в программу? steck Общие вопросы Delphi 1 07.04.2007 17:20