Avatar billede zkov82 Nybegynder
02. november 2007 - 12:57 Der er 12 kommentarer

openGL - car crash

Hej.
Jeg har påtaget mig en opgave på skolen, hvor jeg skal lave et car crash.
Altså simpelthen i bil der rammer et object, hvorefter dele af bilen ryger af og deformere.
Til at starte med vil jeg egentlig bare kunne lave den sådan at nogle af polygonerne fra bilen "frigives" fra resten bilen og således kan tilføres noget kraft og dermed flyver væk fra bilen.
Er der nogen der har nogle gode ideer?
Avatar billede nielle Nybegynder
02. november 2007 - 14:28 #1
Er dette her et spørgsmål om fysik-simulation eller programmering :^)
Avatar billede zkov82 Nybegynder
03. november 2007 - 19:23 #2
Behøves der er at være forskel?
Jeg er sådan set ligeglad med fysikdelen, jeg ville bare høre om der var nogen der havde erfaring med det...
Avatar billede nielle Nybegynder
03. november 2007 - 19:42 #3
Tja, hvis man nu var rimelig god til fysik men desværre lidt rusten til C++ eller OpenGL...

Du slipper næppe for at tænke lidt i fysik hvsi dus skal få det til at sw lidt realistisk ud: F.eks. kasteparabler af de løsrevne dele, og det faktum at store dele (store trekanter) falder kortere end lette dele (små trekanter).
Avatar billede intel4004 Novice
04. november 2007 - 01:24 #4
Det lyder som om du måske ikke rigtig har gennemtænkt hvor stort sådan et projekt egentligt er. Jeg har ikke selv erfaring med fysik simulering, men hvis du har nødvendige baggrund i matematik og fysik, så bare klø på, der findes sandsynligvis mange bøger om simulering af stress på masser og hvordan de deformeres og går i stykker.

Hvilken skole? Fysik simulering er noget jeg som jeg forestiller mig man arbejder med på en videregående uddannelse. Jeg har selv kigget kort på hvordan man simulerer vand. Matematikken trækker tænder ud :)

Så mit råd: Det lyder som et meget spændende projekt, men afgør først om du virkelig har den fornødne fysiske erfaring for simulere sådanne bevægelser. Mit bud.

http://en.wikipedia.org/wiki/Strength_of_materials

Mvh Intel4004
Avatar billede nielle Nybegynder
04. november 2007 - 07:41 #5
Jeg læser nu ikke spørgsmålet som om at der spørges efter en egentlig simulering. Bare noget som ligner tilstrækkeligt. Men så er der nu alligevel brug for noget med kasteparabler og den slags ting.
Avatar billede zkov82 Nybegynder
05. november 2007 - 11:41 #6
Jeg ved skam alt om hvor stort og nederen det kan være at lave sådan et projekt. Jeg har lavet noget tilsvarende tidligere, bare ikke med en bil som objekt. Jeg spørger ikke så meget om, om der er nogen der ved hvordan det kommer til at se godt ud, da det nok er lidt udenfor scopet for min opgave, men derimod ville jeg bare høre om der er nogen der har erfaring med noget lignende, og de evt. kunne give nogle pointers til hvad man skulle være opmærksom på.
Evt. om der var nogen der kendte en god tutorial, som arbejder med noget af det samme.

Intel4004> Jeg læser på universitetet. Min gruppe bestemte sig for hvad vi skulle lave, uden at have tænkt det helt igennem. Jeg har også arbejdet med simulering af vand osv. Og ja, det er ret langhåret :)
Avatar billede intel4004 Novice
05. november 2007 - 12:49 #7
Jeg var nok lidt træt da jeg skrev her sidst :)

Tit ser man mange yngre folkeskole elever som har de helt store planer til et 3-ugers skole-projekt, men alligevel ingen anelse om hvad der egentlig kræves. Du brugte ordet "skole", så derfor. Men forstår så du går universitetet. Jeg er selv igang med et afgangprojekt på universitetet, og man kan tit blive over-ambitiøs der også :)

Men hvis du har tidligere erfaring med simulering i 3D-grafik så er det jo super :) Hvor lang tid har i til det?

Mvh Intel4004
Avatar billede zkov82 Nybegynder
05. november 2007 - 13:06 #8
Ja....ordet skole var vist bare en skrivefejl, fra dengang man gik der.

Vi skal aflevere det i starten af januar, og vi har som sådan allerede et framework at arbejde ud fra, hvor vi har loadet modeller af biler ind via. en obj-fil.
Vores opgave består "bare" i at tage modellen og beregne hvor meget kraft der skal tilføjes til hver enkelt face, når der er collision, og så tage en passende mængde af faces'ne og skille dem ud fra resten af modellen.
Jeg har før lavet flere 3d-projekter, bl.a. nogle partikelsystemer, hvor beregningen blev lavet vha. Verlet og Eulers metoder til beregning af kræfterne. Vand har vi også simuleret, men det har jeg ikke lyst til at tænke på igen - det var ikke nogen speciel god oplevelse - det var meget tricky :)
Avatar billede intel4004 Novice
05. november 2007 - 17:14 #9
Jamen med den erfaring, så er det måske slet ikke så over-ambitiøst alligevel :)

Men jeg har ikke selv den store erfaring med dette område - kun i forbindelse med at være mere ambitiøs end hvad sundt er.

Jeg kunne henvise til en bog som du måske mangler at læse om emnet :) Denne her eksempelvis: http://www.amazon.com/dp/012369471X. Men ja, blot en ide.

Måske findes der libraries derude til programmering af sådanne ting i C++. C++ kan jo nemt blive en stor tids-sluger, så det var måske bedre at overveje en platform til eksperimentering alene, såsom MATLAB eller Mathematica? Men det er altid sjovere at se ens resultater i et rigtigt implementations-sprog :)

Mvh Intel4004
Avatar billede crazysnap Seniormester
08. november 2007 - 14:49 #10
Hej zkov82,

Jeg kan godt lægge ud med at sige at det ikke er et simpelt projekt i har lagt jer ud i. Jeg kender til bacholar og eksamensprojekter som har haft med dette emne at gøre. Meeen, derfor kan i jo godt alligevel få implementeret noget som virker.

Nu når du siger i har lavet opgaver med partikelsystemer og simulering af vand går jeg ud fra det er en realtime engine i bygger videre på. Jeg kommer derfor med pointers som tager udgangspunkt i realtime-rendering.

Jeg ser 3 problemstillinger:

1) Finde ud hvilke facets der kolliderer, med hvad de kolliderer og hvor på facet-fladen kollideringen opstår (for at få den korrekte rotation).

2) Hvordan deformiteten skal udregnes. Altså hvor meget kraft rammer de med, hvor tunge er polygonerne og objektet de rammer, hvad er kontra-kraften og hvad med glidningsmodstand osv osv.

3) Definere soft-spots på bil-objektet. Altså steder hvor ting kan knække af. Dvs. i deler bilen op i flere objekter hvor bindingen mellem objekterne er svag. Så hvis kraften er stor nok slynges disse objekter fra hinanden.


Punkt 2 og 3 kan man slække på alt efter hvor flot eller realistisk effekt man vil opnå.

Det er mere punkt 1 som jeg tror i skal koncentrere jer om. Hvordan finder i ud af hvilke trekanter (eller polygoner) der kolliderer med det andet objekt? Jeg går ud fra at bilen skal kunne deformeres? Men skal det objekt bilen rammer også deformeres? eller er det et statisk solidt objekt?

Hvis i bare tester alle polygoner/trekanter i bilen for skæringer med kollisionsobjektet, kommer det aldrig til at køre i realtime. I skal ud og kigge på rumlige-datastrukturer (Spatial datastructures) som jeres objekt-filer loades ind i fra start af. I udfører så en kollisionstest mellem de to rumlige-datastrukturer og finder præcis de polygoner/trekanter som er involveret i kollisionen. Disse testes herefter for skæringer hvor de præcise skæringspunkter udregnes.

Når dette er gjort kan i tænke over punkt 2 og 3. :) For lige at give jer et paper med på vejen som har lidt af det hele, kan jeg referere til dette:

http://zach.in.tu-clausthal.de/papers/deform_colldet_cgf.pdf


Også en hel anden ting. Hvad er det for en uddannelse? Jeg har selv haft lignende kurser (hvor vi lavede partikelsystemer, kollisioner, vand, terrain-rendering, billboards osv osv) under min studietid. Der skulle muligvis ikke være en Niels Jørgen inkluderet som lektor?


Mvh.
- Snap :)
Avatar billede zkov82 Nybegynder
01. september 2011 - 13:22 #11
ok.
Undskyld det sene svar, jeg kom sgu lige væk fra eksperten...i hele 4 år..
Snap: smid et svar, så får du nogle points
Avatar billede crazysnap Seniormester
31. juli 2013 - 23:31 #12
Hej zskov82,

Ja bedre sent end aldrig, men jeg samler ikke på point, så læg du bare selv et svar og snup dem selv. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester