Сообщения на форуме пользователя Andrey (150 стр.)
Экспортный плагин для 3DSMAX на Delphi (coming soon) | 8 фев. 2007 | 12:35 | #1 |
---|
Coriolis
а зачем тут Delphi? чем C++ не устраивает?
а зачем тут Delphi? чем C++ не устраивает?
Передача HWND окна функции IDirect3D9::CreateDevice() | 8 фев. 2007 | 12:22 | #7 |
---|
Denys
>Как достать код Ошибки функции IDirect3D9::CreateDevice()?
DXGetErrorString9, DXGetErrorDescription9
>Как достать код Ошибки функции IDirect3D9::CreateDevice()?
DXGetErrorString9, DXGetErrorDescription9
// вывод Ошибки Direct3D void Direct3DRender::OutDirect3DError(HRESULT hr) const { // проверка ошибок if (S_OK == hr) { return; } static const char *Desctiption = " Description: "; OutMessage(Console::ERROR_MESSAGE, "%s%s%s%s%s", Console::StdMessage[Console::DIRECT3D_ERROR], DXGetErrorString9(hr), Desctiption, DXGetErrorDescription9(hr), "\n"); }
simple uml editor | 8 фев. 2007 | 11:04 | #13 |
---|
sobaka
ага спасибо посмотрю
ага спасибо посмотрю
Опрос (комментарии) | 7 фев. 2007 | 18:01 | #6 |
---|
mrX
Ну вот смотри:
Ну вот смотри:
//цикл по материалам for (l = 0; l < numMtl; l++) { //обнулить максимальную текстурную координату maxTV = 0; //Проход по списку граней for (j = 0; j < nTriangles; j ++) { //получить грань tvFace = &mesh->tvFace[j]; if (numMtl >= 1) //если совпали индекс материала и индекс материала грани if (l == mesh->getFaceMtlIndex(j)) //цикл по индексам грани for(k = 0; k < 3; k++) { //получить индекс грани index = tvFace->t[k]; //поиск максимальной координаты if (mesh->tVerts[index].y > maxTV) maxTV = mesh->tVerts[index].y; } } // вот это место мне давно давно подсказал 1 хороший человек.. // тут происходит какое-то образение итекстурных координат я давно уже не смотрел сюда но вот теперь назрела проблема. // я так понимаю тут связано с поиском максимального и минимального значенгия координаты но для чего это? if (maxTV != static_cast<float>(maxTV)) { maxTV = static_cast<float>(static_cast<int>(maxTV)) + 1.0f;//округление } else { maxTV = static_cast<float>(static_cast<int>(maxTV));//округление } //цикл по материалам //for (l = 0; l < numMtl; l++) //Проход по списку граней for (j = 0; j < nTriangles; j ++) { //получить грань tvFace = &mesh->tvFace[j]; //если совпали индекс материала и индекс материала грани if (l == mesh->getFaceMtlIndex(j)) { //цикл по индексам грани for(k = 0; k < 3; k++) { //получить индекс грани index = tvFace->t[k]; //получить координату x tvert.x = mesh->tVerts[index].x; //перевернуть координату y tvert.y = maxTV - mesh->tVerts[index].y; //записать в массив tVerts[index] = tvert; } } } } |
Опрос (комментарии) | 7 фев. 2007 | 17:57 | #5 |
---|
mrX
можно конечно но его там многовfто... как выкладывать?
можно конечно но его там многовfто... как выкладывать?
simple uml editor | 7 фев. 2007 | 13:01 | #11 |
---|
zxmd
Daevaorn
Я заглянул в exe файл и увидел ужас:
$0U <е]Г SOFTWARE\Borland\Delphi\RTL FPUMaskValue
по результату работы проги все стало понятно.
Daevaorn
Я заглянул в exe файл и увидел ужас:
$0U <е]Г SOFTWARE\Borland\Delphi\RTL FPUMaskValue
по результату работы проги все стало понятно.
simple uml editor | 6 фев. 2007 | 19:22 | #6 |
---|
Я только учусь (комментарии) | 6 фев. 2007 | 14:13 | #1 |
---|
Ну вот совсем другое дело...
Передача параметров в эффект (DirectX HLSL) | 6 фев. 2007 | 11:40 | #15 |
---|
-=FiliMOON=-
>2Марина
>**Бегает с плакатом "Смерть нубизму" и рыдает**
>без коментариев... зы: учи азы
что самый умный? или ты сразу все знал ;) Не у всех участников форума большой опыт.
>2Марина
>**Бегает с плакатом "Смерть нубизму" и рыдает**
>без коментариев... зы: учи азы
что самый умный? или ты сразу все знал ;) Не у всех участников форума большой опыт.
куда делась D3DXSaveTextureToFileInMemory? | 6 фев. 2007 | 11:32 | #1 |
---|
araud
Какой у тебя SDK ? в апрельском 2006 года. она есть.
Тема бессмыслена обнови SDK.
Какой у тебя SDK ? в апрельском 2006 года. она есть.
Тема бессмыслена обнови SDK.
Вопрос по рендерингу ландшафта | 6 фев. 2007 | 11:29 | #17 |
---|
dave
>>далее динамический IB с Lock/Unlock memcpy это не совсем хорошо...
>Что же тут нехорошего? Если все правильно запрограмлено, то никаких проблем. Под ОГЛ не знаю но в ДХ пихать весь >ландшафт в один буффер нереально. Да и ОГЛ наверное тоже если видеопамять нужна будет под текстуры и т.д.
ROAM к примеру имеет большой недостаток пересчет бинарного дерева треугольников завязанного на CPU (хотя может и на шейдере можно сделать) и динамические вершинные буферы. Об это писал Снук в книги "3D Ландшафты в реальном времени на C++ и DirectX 9". Он рекомендовал так не делать. Динамический вершинный бфер хуже оптимизируется для хранения в видеокарте.
Насколько я понимаю их следует использовать по минимум. Если я не ошибаюсь используются они к примеры в скелетной анимации. И то уже она в современном подходе использует вершинный шейдер.
А почему нереально загнать весь ландшафт в видео память? ограничение только на видео память. Если конечно ландшафт бесконечный то тут динамическая подгрузка должна быть, решение в лоб не подходит. И какая разница на каком API это использовать в IDiect3DVertexBuffer9 и в GL_ARB_vertex_buffer_objects похожие принципы создания/хранения геометрии.
>>далее динамический IB с Lock/Unlock memcpy это не совсем хорошо...
>Что же тут нехорошего? Если все правильно запрограмлено, то никаких проблем. Под ОГЛ не знаю но в ДХ пихать весь >ландшафт в один буффер нереально. Да и ОГЛ наверное тоже если видеопамять нужна будет под текстуры и т.д.
ROAM к примеру имеет большой недостаток пересчет бинарного дерева треугольников завязанного на CPU (хотя может и на шейдере можно сделать) и динамические вершинные буферы. Об это писал Снук в книги "3D Ландшафты в реальном времени на C++ и DirectX 9". Он рекомендовал так не делать. Динамический вершинный бфер хуже оптимизируется для хранения в видеокарте.
Насколько я понимаю их следует использовать по минимум. Если я не ошибаюсь используются они к примеры в скелетной анимации. И то уже она в современном подходе использует вершинный шейдер.
А почему нереально загнать весь ландшафт в видео память? ограничение только на видео память. Если конечно ландшафт бесконечный то тут динамическая подгрузка должна быть, решение в лоб не подходит. И какая разница на каком API это использовать в IDiect3DVertexBuffer9 и в GL_ARB_vertex_buffer_objects похожие принципы создания/хранения геометрии.
Вопрос по рендерингу ландшафта | 5 фев. 2007 | 19:45 | #10 |
---|
Спец
А если карта Radeon 9200, GeForce 4200,5500
как ты выведешь за 1 вызов много поликов? Если ты конечно под OpenGL то тут проблем нет.
далее динамический IB с Lock/Unlock memcpy это не совсем хорошо...
я бы сделал 1 VB и 1 IB и рисовал много DIP'ов, при больших ландшафтах нужно побольше выбрать размер узла тогда за 100 Dip'ов можно отрендерить весь ландшафт. Я считаю это не слишком много.
к такой схеме очень хорошо прикручивается Chucked Lod просто по растонянию(ошибке) подсовыввается другой индексный буфер. В таком способе оставется 1 недостаток это частый вызов DIP но зато все буферы статические.
А если карта Radeon 9200, GeForce 4200,5500
как ты выведешь за 1 вызов много поликов? Если ты конечно под OpenGL то тут проблем нет.
далее динамический IB с Lock/Unlock memcpy это не совсем хорошо...
я бы сделал 1 VB и 1 IB и рисовал много DIP'ов, при больших ландшафтах нужно побольше выбрать размер узла тогда за 100 Dip'ов можно отрендерить весь ландшафт. Я считаю это не слишком много.
к такой схеме очень хорошо прикручивается Chucked Lod просто по растонянию(ошибке) подсовыввается другой индексный буфер. В таком способе оставется 1 недостаток это частый вызов DIP но зато все буферы статические.
Скелетная анимация в OpenGL | 5 фев. 2007 | 13:56 | #10 |
---|
DimanX
>Вот так:
>tVerts[i] += (geom.Verts[i]*frames[frame][wtbl[i][j].ID].M)*wtbl[i][j].Weight;
дак в Delphi нет оператора +=
поэтому твой код возможно будет быстрей аналогичного на Delphi
>Вот так:
>tVerts[i] += (geom.Verts[i]*frames[frame][wtbl[i][j].ID].M)*wtbl[i][j].Weight;
дак в Delphi нет оператора +=
поэтому твой код возможно будет быстрей аналогичного на Delphi
Опрос (комментарии) | 5 фев. 2007 | 13:33 | #3 |
---|
mrX
Из интересующих тем должно быть много, для начинающих совсем нужны основы: структура плагинов 3DS Max, какие бывают плагины, доступ к данных сцены, поля пользователя написание GUI для плагинов, узлы сцен, и т.д.
для более опытных более тонкие моменты.
К примеру не могу понять почему на 1 сцене нормально экспортируются текстурные координаты, на другой все съезжает :(
еще слышал что поменяли ядро 3DS Max 9 так что нужно введение про различия SDK 8.0 и 9.0.
Из интересующих тем должно быть много, для начинающих совсем нужны основы: структура плагинов 3DS Max, какие бывают плагины, доступ к данных сцены, поля пользователя написание GUI для плагинов, узлы сцен, и т.д.
для более опытных более тонкие моменты.
К примеру не могу понять почему на 1 сцене нормально экспортируются текстурные координаты, на другой все съезжает :(
еще слышал что поменяли ядро 3DS Max 9 так что нужно введение про различия SDK 8.0 и 9.0.
Опрос (комментарии) | 5 фев. 2007 | 13:26 | #2 |
---|
mrX
В чем проблема?
Сообщество должно быть.
В чем проблема?
Сообщество должно быть.