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

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

Вернуться   www.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 29.12.2011, 01:44   #1
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Vehicle Physics

Методом тыка и какой-то матери сделал нечто ведущее себя как четырехколесное авто. Т.е. оно приседает как надо если ударить его шариком и гораздо охотней движется в продольном направлении.
Но какого хрена у этого при движении колеса вертятся с нужной скоростью, но не в ту сторону?



class car{
public:
//масса автомобиля.
float mass;
//жесткость пружин
Handle body;
Handle fl,fr,rr,rl;
Handle wh[4];

car(){

makebodycompaund();
xEntityCreateVehicle(body);
xEntityAddWheel(body,fr);
xEntityAddWheel(body,fl);
xEntityAddWheel(body,rr);
xEntityAddWheel(body,rl);
xEntityDisableSleeping(body);
xEntityDisableSleeping (fr);
xEntityDisableSleeping (fl);
xEntityDisableSleeping (rr);
xEntityDisableSleeping (rl);
float height=0.3;
xEntityWheelSetConnectionPoint(body,0,-0.85,height,-1.55);
xEntityWheelSetConnectionPoint(body,1,0.85,height,-1.55);
xEntityWheelSetConnectionPoint(body,2,-0.95,height,1.6);
xEntityWheelSetConnectionPoint(body,3,0.95,height,1.6);

float maxforce=130;
xEntityWheelSetMaxSuspensionForce(body,0,maxforce);
xEntityWheelSetMaxSuspensionForce(body,1,maxforce);
xEntityWheelSetMaxSuspensionForce(body,2,maxforce);
xEntityWheelSetMaxSuspensionForce(body,3,maxforce);

float travel=100.0;
xEntityWheelSetMaxSuspensionTravel(body,0,travel);
xEntityWheelSetMaxSuspensionTravel(body,1,travel);
xEntityWheelSetMaxSuspensionTravel(body,2,travel);
xEntityWheelSetMaxSuspensionTravel(body,3,travel);
float radius=0.38;
xEntityWheelSetRadius(body,0,radius);
xEntityWheelSetRadius(body,1,radius);
xEntityWheelSetRadius(body,2,radius);
xEntityWheelSetRadius(body,3,radius);
float steering=0.0;
xEntityWheelSetSteering(body,0,steering);
xEntityWheelSetSteering(body,1,steering);
xEntityWheelSetSteering(body,2,steering);
xEntityWheelSetSteering(body,3,steering);

float xr=0,yr=-1.0,zr=0;
xEntityWheelSetRay(body,0,xr,yr,zr);
xEntityWheelSetRay(body,1,xr,yr,zr);
xEntityWheelSetRay(body,2,xr,yr,zr);
xEntityWheelSetRay(body,3,xr,yr,zr);

float friction=20.0;
xEntityWheelSetFriction(body,0,friction);
xEntityWheelSetFriction(body,1,friction);
xEntityWheelSetFriction(body,2,friction);
xEntityWheelSetFriction(body,3,friction);

float suspcompr=1.0;
xEntityWheelSetSuspensionCompression(body,0,suspcompr);
xEntityWheelSetSuspensionCompression(body,1,suspcompr);
xEntityWheelSetSuspensionCompression(body,2,suspcompr);
xEntityWheelSetSuspensionCompression(body,3,suspcompr);

float susplen=0.336;
xEntityWheelSetSuspensionLength(body,0,susplen);
xEntityWheelSetSuspensionLength(body,1,susplen);
xEntityWheelSetSuspensionLength(body,2,susplen);
xEntityWheelSetSuspensionLength(body,3,susplen);

float suspdamp=3.0;
xEntityWheelSetSuspensionDamping(body,0,suspdamp);
xEntityWheelSetSuspensionDamping(body,1,suspdamp);
xEntityWheelSetSuspensionDamping(body,2,suspdamp);
xEntityWheelSetSuspensionDamping(body,3,suspdamp);

float suspshift=7.5;
xEntityWheelSetSuspensionStiffness(body,0,suspshift);
xEntityWheelSetSuspensionStiffness(body,1,suspshift);
xEntityWheelSetSuspensionStiffness(body,2,suspshift);
xEntityWheelSetSuspensionStiffness(body,3,suspshift);

float rollinflu=2.0f;
xEntityWheelSetRollInfluence(body,0,rollinflu);
xEntityWheelSetRollInfluence(body,1,rollinflu);
xEntityWheelSetRollInfluence(body,2,rollinflu);
xEntityWheelSetRollInfluence(body,3,rollinflu);

}

void makebodycompaund(){


body=xLoadMesh("mesh/car.b3d");
//xMoveEntity(body,0,10,0);
xEntityAddCompoundShape(body,10);
//botom
xEntityCompoundAddBox(body,2.0,0.8,2.25);
xEntityCompoundChildSetPosition(body,0,0,0.6,0);
//top
xEntityCompoundAddBox(body,1.7,0.5,1.25);
xEntityCompoundChildSetPosition(body,1,0,1.2,0.4);
//front
xEntityCompoundAddBox(body,2.0,0.2,1.25);
xEntityCompoundChildSetPosition(body,2,0,0.9,-1.75);
//xEntityCompoundChildSetRotation(body,2,0,0.015,0);
//kinder of front bumper
xEntityCompoundAddBox(body,2.0,0.55,0.25);
xEntityCompoundChildSetPosition(body,3,0,0.55,-2.3);

//kinder of back bumper
xEntityCompoundAddBox(body,2.0,0.55,0.5);
xEntityCompoundChildSetPosition(body,4,0,0.65,2.3);
//kinder of back 
xEntityCompoundAddBox(body,2.0,0.35,0.9);
xEntityCompoundChildSetPosition(body,5,0,0.95,1.5);



Handle tex=xLoadTexture("mesh/wheel.jpg");
fr=xLoadMesh("mesh/wheel.b3d");
xEntityAddSphereShape(fr,1.0,0.39);
xPositionEntity(fr,-0.85,0.39,-1.55);
xEntityTexture(fr,tex);


fl=xCopyEntity(fr);
xPositionEntity(fl,0.85,0.39,-1.55);
xScaleEntity(fl,-1,1,-1);
xRotateEntity(fl,90,270,0);
xEntityAddSphereShape(fl,1.0,0.39);

rr=xCopyEntity(fr);
xPositionEntity(rr,-0.95,0.39,1.6);
xEntityAddSphereShape(rr,1.0,0.39);

rl=xCopyEntity(fl);
xPositionEntity(rl,0.95,0.39,1.6);
xEntityAddSphereShape(rl,1.0,0.39);
}

void simulate(){

}


};
Где косяк?

кинуть шарик слабо мышь[1], сильно мышь[2]

Последний раз редактировалось dsd, 13.08.2012 в 19:28.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
4yBa4Ok (01.01.2012), LLI.T.A.L.K.E.R. (29.12.2011)
Старый 29.12.2011, 02:13   #2
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,892
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Vehicle Physics

Если машина отрывается от земли, то колеса начинают дрожать.
з.ы. в архиве Trojan.Win32.Swisyn
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (29.12.2011)
Старый 29.12.2011, 02:17   #3
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Vehicle Physics

xEntityWheelSetAxle(chassis, wheel, -1.0, 0.0, 0.0)
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (29.12.2011)
Старый 29.12.2011, 02:21   #4
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Vehicle Physics

http://online.us.drweb.com/cache/?i=...e72c3a0ed86eae Онлайн-проверка дром-вебом и avast вирусов не находит. хмм. Это оно мой экзешник вирусом обзывает?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
4yBa4Ok (01.01.2012)
Старый 29.12.2011, 03:06   #5
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,892
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Vehicle Physics

virustotal.com нашел, но его нашли какие то унылые антивирусы так что возможно ошиблись.
(Offline)
 
Ответить с цитированием
Старый 29.12.2011, 22:01   #6
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Vehicle Physics


Специально по просьбам учащихся Сделал простенькое управление стрелочками. Пробел - тормоз. Привязать-отвязать камеру к машине клавиша [2] на основной клавиатуре. В отвязанном режиме рулить камерой мышой и wasd

Код внутри.

Если правильно пользоваться командами
xEntityWheelSetBrake
xEntityWheelSetEngineForce
xEntityWheelSetFriction
И менять их в прямом эфире по зависимостям похожим на реальные, то можно сделать вполне себе реалистичную физику. Правда научить прогу правильно определять нужные параметры уже сложней.

Моделька машины по-моему симпатичная вышла

Последний раз редактировалось dsd, 13.08.2012 в 19:28.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
4yBa4Ok (30.12.2011), LLI.T.A.L.K.E.R. (30.12.2011)
Старый 31.12.2011, 15:54   #7
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Vehicle Physics


Чу-чуть более адекватное поведение.

Чтобы колеса в воздухе не мотылялись так резко им надо массу побольше или какой-то параметр подвески подкрутить?

Последний раз редактировалось dsd, 13.08.2012 в 19:28.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
4yBa4Ok (01.01.2012), LLI.T.A.L.K.E.R. (31.12.2011)
Старый 01.01.2012, 17:48   #8
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Vehicle Physics



Оказывается нурбс оче удобно для создания мешей дорог.
Терь можно кнопкой 3 менять привод машины на передне-, задне- и полно- приводной.

Последний раз редактировалось dsd, 13.08.2012 в 19:28.
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
4yBa4Ok (01.01.2012), FREE MAN (02.01.2012), LLI.T.A.L.K.E.R. (01.01.2012), mauNgerS (02.01.2012), moka (02.01.2012)
Старый 02.01.2012, 21:26   #9
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Vehicle Physics

class engine_SFX{
public:
Handle s800,p800,s1000,p1000,s1250,p1250;
Handle s1562,p1562,s1952,p1952,s2440,p2440,s3050,p3050;
Handle s3812,p3812,s4765,p4765,s5956,p5956;
static const int deffreq=48000;
engine_SFX(){
s800=xLoadSound("sfx/car/800.mp3");
s1000=xLoadSound("sfx/car/1000.mp3");
s1250=xLoadSound("sfx/car/1250.mp3");
s1562=xLoadSound("sfx/car/1562.mp3");
s1952=xLoadSound("sfx/car/1952.mp3");
s2440=xLoadSound("sfx/car/2440.mp3");
s3050=xLoadSound("sfx/car/3050.mp3");
s3812=xLoadSound("sfx/car/3812.mp3");
s4765=xLoadSound("sfx/car/4765.mp3");
s5956=xLoadSound("sfx/car/5956.mp3");

p800=xLoadSound("sfx/car/800_p.mp3");
p1000=xLoadSound("sfx/car/1000_p.mp3");
p1250=xLoadSound("sfx/car/1250_p.mp3");
p1562=xLoadSound("sfx/car/1562_p.mp3");
p1952=xLoadSound("sfx/car/1952_p.mp3");
p2440=xLoadSound("sfx/car/2440_p.mp3");
p3050=xLoadSound("sfx/car/3050_p.mp3");
p3812=xLoadSound("sfx/car/3812_p.mp3");
p4765=xLoadSound("sfx/car/4765_p.mp3");
p5956=xLoadSound("sfx/car/5956_p.mp3");

}

void soundIt(int mode,int freq){
Handle s1,s2;
float p1,p2;
float v1,v2;
if(mode==0){
    //выбираем звуки мощи и определяем необходимый питч.
    if(freq>=800){s1=p800;s2=p1000;p1=1.0+0.25*(float)(freq-800)/200.0;p2=1-0.2*(float)(1000-freq)/200.0;}
    if(freq>=1000){s1=p1000;s2=p1250;p1=1.0+0.25*(float)(freq-1000)/250.0;p2=1-0.2*(float)(1250-freq)/250.0;}
    if(freq>=1250){s1=p1250;s2=p1562;p1=1.0+0.25*(float)(freq-1250)/312.0;p2=1-0.2*(float)(1562-freq)/312.0;}
    if(freq>=1562){s1=p1562;s2=p1952;p1=1.0+0.25*(float)(freq-1562)/390.0;p2=1-0.2*(float)(1952-freq)/390.0;}
    if(freq>=1952){s1=p1952;s2=p2440;p1=1.0+0.25*(float)(freq-1962)/488.0;p2=1-0.2*(float)(2440-freq)/488.0;}
    if(freq>=2440){s1=p2440;s2=p3050;p1=1.0+0.25*(float)(freq-2440)/610.0;p2=1-0.2*(float)(3050-freq)/610.0;}
    if(freq>=3050){s1=p3050;s2=p3812;p1=1.0+0.25*(float)(freq-3050)/762.0;p2=1-0.2*(float)(3812-freq)/762.0;}
    if(freq>=3812){s1=p3812;s2=p4765;p1=1.0+0.25*(float)(freq-3812)/953.0;p2=1-0.2*(float)(4765-freq)/953.0;}
    if(freq>=4765){s1=p4765;s2=p5956;p1=1.0+0.25*(float)(freq-4765)/1191.0;p2=1-0.2*(float)(5956-freq)/1191.0;}
}

if(mode==1){
    //выбираем звуки движка без нагрузки и определяем необходимый питч.
    if(freq>=800){s1=s800;s2=s1000;p1=1.0+0.25*(float)(freq-800)/200.0;p2=1-0.2*(float)(1000-freq)/200.0;}
    if(freq>=1000){s1=s1000;s2=s1250;p1=1.0+0.25*(float)(freq-1000)/250.0;p2=1-0.2*(float)(1250-freq)/250.0;}
    if(freq>=1250){s1=s1250;s2=s1562;p1=1.0+0.25*(float)(freq-1250)/312.0;p2=1-0.2*(float)(1562-freq)/312.0;}
    if(freq>=1562){s1=s1562;s2=s1952;p1=1.0+0.25*(float)(freq-1562)/390.0;p2=1-0.2*(float)(1952-freq)/390.0;}
    if(freq>=1952){s1=s1952;s2=s2440;p1=1.0+0.25*(float)(freq-1962)/488.0;p2=1-0.2*(float)(2440-freq)/488.0;}
    if(freq>=2440){s1=s2440;s2=s3050;p1=1.0+0.25*(float)(freq-2440)/610.0;p2=1-0.2*(float)(3050-freq)/610.0;}
    if(freq>=3050){s1=s3050;s2=s3812;p1=1.0+0.25*(float)(freq-3050)/762.0;p2=1-0.2*(float)(3812-freq)/762.0;}
    if(freq>=3812){s1=s3812;s2=s4765;p1=1.0+0.25*(float)(freq-3812)/953.0;p2=1-0.2*(float)(4765-freq)/953.0;}
    if(freq>=4765){s1=s4765;s2=s5956;p1=1.0+0.25*(float)(freq-4765)/1191.0;p2=1-0.2*(float)(5956-freq)/1191.0;}
}

xSoundPitch(s1,deffreq*p1);xSoundPitch(s2,deffreq*p2);
xPlaySound(s1);

}
};
Что я делаю не так? Потому как звук получается потусторонний, а фпс с 80 до 30 проседает. soundIt(int mode,int freq) вызывается каждый кадр.

Каково оптимальное количество полигонов для xEntityAddTriMeshShape?

Кстати, а PhysX сильно сложно с хорсом состыковать?
(Offline)
 
Ответить с цитированием
Старый 04.01.2012, 17:43   #10
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Vehicle Physics

Кстати, а PhysX сильно сложно с хорсом состыковать?
Без софт боди не сложно.
(Offline)
 
Ответить с цитированием
Старый 04.01.2012, 22:52   #11
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Vehicle Physics

Сообщение от pozitiffcat Посмотреть сообщение
Без софт боди не сложно.
Кул, значит за несколько следующих месяцев я, возможно, соберу очередное недоприложение.

Вопрос не по теме. Вот скачал я експресс студию 2010. Цветовая гама супер. Но в обычной студии если навестись на какую-нить функцию оно спустя пару сек выплевывало краткое её описание.
А если напечать ну хотябы: "Console::" то оно после двоеточия выдавало замечательный список возможных продолжений.
Как мне в экспресс включить автозавершение комманд и подобный списочек? Или в иде для экономных этой функции нет?

PhysX-3.1.1_PC_VC10_SDK_Core есть еще очень похожая сдк с VC9 в имени и во время установки експресс студии оно качало какую-то хрень с VC9, что вообще такое скрывается за этими буквами и есть ли связь?
(Offline)
 
Ответить с цитированием
Старый 04.01.2012, 23:50   #12
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Vehicle Physics

в 2010 версии интеллисенс выключен разработчиками. тебе надо создавать приложение win32 а не CLR. Там все есть. CLR для программирования на .NET фреймворке, для чего лучше подходит c#
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (05.01.2012)
Старый 07.01.2012, 21:04   #13
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Vehicle Physics



Почти доделал свою помесь фастбэка с фастбэком шелби гт350

Последний раз редактировалось dsd, 14.11.2015 в 15:10.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
h1dd3n (08.01.2012), LLI.T.A.L.K.E.R. (07.01.2012), mauNgerS (08.01.2012)
Старый 07.01.2012, 21:09   #14
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: Vehicle Physics

Нормали очень кривые местами..
(Offline)
 
Ответить с цитированием
Старый 07.01.2012, 21:13   #15
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Vehicle Physics

Для первой модели пойдет Тем более это рендеры без сглаживания.
Ну и таки да, там есть много мест где полигоны немножко иначе пустить надо.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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