 |
3D-программирование Вопросы, касающиеся программирования 3D мира |
02.03.2010, 19:23
|
#1
|
Оператор ЭВМ
Регистрация: 16.09.2009
Сообщений: 23
Написано одно полезное сообщение
|
[Physics] Простой пример, с большими проблемами
Создал простой пример на блитце (с++), подключил физикс. Не работает кубик лежал как и лежит, не могу понять в чем дело, смотрел примеры на блитцбэйсик там последовательность действий подобная что и у меня, но у них все пашет...
#include <blitz3dsdk.h>
#include <Blitzpx.h>
int main()
{
bbBeginBlitz3D();
bbGraphics3D(800,600,32,2);
int cam=bbCreateCamera();
bbPositionEntity(cam,0,10,-20);
int plane=bbCreatePlane();
bbEntityColor(plane,64,128,128);
int light=bbCreateLight();
pxCreateWorld(1,"");
int cub=bbCreateCube();
int Body=pxBodyCreateCube(1,1,1,1);
pxBodySetPosition(Body,0,10,0);
while(!bbKeyHit(KEY_ESCAPE))
{
pxRenderPhysic(60,0);
pxBodySetEntity(cub,Body);
bbUpdateWorld();
bbRenderWorld();
bbFlip();
}
bbEndBlitz3D();
}
|
(Offline)
|
|
02.03.2010, 20:25
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,743
Написано 5,461 полезных сообщений (для 15,676 пользователей)
|
Ответ: [Physics] Простой пример, с большими проблемами
Проверь, двигается ли тело. Для этого выведи на экран его координаты и смотри, меняются ли они.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
02.03.2010, 20:29
|
#3
|
Оператор ЭВМ
Регистрация: 16.09.2009
Сообщений: 23
Написано одно полезное сообщение
|
Ответ: [Physics] Простой пример, с большими проблемами
Сообщение от ABTOMAT
Проверь, двигается ли тело. Для этого выведи на экран его координаты и смотри, меняются ли они.
|
Сейчас проверю, можешь мне ссылку на нормальный враппер дать, а то я и на форуме смотрел и вообщем в интеренете там все ссылки битые
|
(Offline)
|
|
02.03.2010, 20:42
|
#4
|
Оператор ЭВМ
Регистрация: 16.09.2009
Сообщений: 23
Написано одно полезное сообщение
|
Ответ: [Physics] Простой пример, с большими проблемами
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <blitz3dsdk.h>
#include <Blitzpx.h>
int main()
{
bbBeginBlitz3D();
bbGraphics3D(800,600,32,2);
int cam=bbCreateCamera();
bbPositionEntity(cam,0,10,-20);
int plane=bbCreatePlane();
bbEntityColor(plane,64,128,128);
int light=bbCreateLight();
pxCreateWorld(1,"take");
int cub=bbCreateCube();
int Body=pxBodyCreateCube(1,1,1,1);
pxBodySetPosition(Body,0,10,0);
char buffer[10];
while(!bbKeyHit(KEY_ESCAPE))
{
pxRenderPhysic(60,0);
pxBodySetEntity(cub,Body);
bbUpdateWorld();
bbRenderWorld();
sprintf(buffer, "%f", pxBodyGetPositionY(Body));
bbText(100,100,buffer);
sprintf(buffer, "%f", bbEntityY(cub));
bbText(100,200,buffer);
bbFlip();
}
bbEndBlitz3D();
}
Вывод: физический объект двигается, а графический нет!!! Следовательно проблема в привзяке, только я не пойму где именно
|
(Offline)
|
|
02.03.2010, 20:57
|
#5
|
Мастер
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений (для 3,006 пользователей)
|
Ответ: [Physics] Простой пример, с большими проблемами
Попробуй перепозиционировать графический объект вручную. Находишь координаты и ротации физического, на него позиционируешь и крутишь графический, в цикле естественно..
|
(Offline)
|
|
02.03.2010, 21:05
|
#6
|
Оператор ЭВМ
Регистрация: 16.09.2009
Сообщений: 23
Написано одно полезное сообщение
|
Ответ: [Physics] Простой пример, с большими проблемами
Сообщение от EvilChaotic
Попробуй перепозиционировать графический объект вручную. Находишь координаты и ротации физического, на него позиционируешь и крутишь графический, в цикле естественно..
|
Так делал, но все же хочется с нормальных средств Physix
|
(Offline)
|
|
02.03.2010, 21:29
|
#7
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: [Physics] Простой пример, с большими проблемами
создай функцию привязки и пользуйся ей
|
(Offline)
|
|
02.03.2010, 21:34
|
#8
|
Оператор ЭВМ
Регистрация: 16.09.2009
Сообщений: 23
Написано одно полезное сообщение
|
Ответ: [Physics] Простой пример, с большими проблемами
Сообщение от H@NON
создай функцию привязки и пользуйся ей
|
Уже создал, но почему стандартная не пашет?
|
(Offline)
|
|
02.03.2010, 21:49
|
#9
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,743
Написано 5,461 полезных сообщений (для 15,676 пользователей)
|
Ответ: [Physics] Простой пример, с большими проблемами
Вывод: физический объект двигается, а графический нет!!!
|
Это хорошо, что ты такой вывод сделал, но только приучи себя делать их сразу, а не ждать наводящих советов
pxBodySetEntity - это хак, она меняет координаты/поворот ентити блица прямо в памяти, вот почему она работает только в Блице 3Д, т.к. зависит от его структуры данных. И поэтому же для Ксорса такая функция своя (хотя не знаю, как сейчас, вроде, авторы её уже совсем выпилили, и правильно сделали: состыковывать изменения Ксорса и Враппера при каждом изменении чего-то там внутри - не рулит). Возможно, в Б3ДСДК, хоть это и "почти блиц3Д", структура немного иная, вот и не пашет.
Кстати в 1.100 вроде, версии, блица, уже глюки полезли со стандартной pxBodySetEntity, видимо, Марк наковырял внутренности, так что советую написать свою функцию. Надёжней будет.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
|
|
02.03.2010, 23:35
|
#10
|
Оператор ЭВМ
Регистрация: 16.09.2009
Сообщений: 23
Написано одно полезное сообщение
|
Ответ: [Physics] Простой пример, с большими проблемами
Спасибо всем за помощь
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:17.
|