Autor |
Beitrag |
jjturbo
      
Beiträge: 516
Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
|
Verfasst: Fr 17.08.07 11:23
Moin Forum,
ich möchte eine Fräsmaschine mittels GLScene simulieren.
An einem Holzblock soll Material weggefräst werden und das möchte ich visualisieren.
Mein erster Gedanke war den Holzblock in viele kleine Würfel zu zerlegen und jeden dieser kleinen Würfel, der mit dem sich durch das Holz bewegenden Fräser in Berührung kommt, verschwinden zu lassen.
Aber wenn ich mal davon ausgehe, daß mein Material Abmessungen von 1000mmx500mmx500mm hätte und ich es in kleine Würfel von 1/10mm zerlege, dann würde die Anzahl der Würfel wohl zu groß und alles viel zu langsam...
Wie geht man so was am besten an? es gibt doch bestimmt elegantere Lösungsansätze.
Danke im voraus, jjturbo
_________________ Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
|
|
arj
      
Beiträge: 378
Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
|
Verfasst: Fr 17.08.07 11:29
Ja, du könntest ein dynamisches Mesh machen.
Also die Auflösung deines Blocks dort entsprechend vergrößern wo du es benötigst,
das ist zwar nicht so einfach, aber geschwindigkeitstechnisch ziemlich gut gegenüber
deinem Vorschlag.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 17.08.07 11:41
Viel Spaß.
Nennt sich Solid Body Simulation, und ist recht kompliziert.
Für das Fräs-Simulations-Modul von Unigraphics oder SolidWorks gehen schon mal ein paar Tausender drauf. Wird wohl nicht ganz umsonst so teuer sein.
Im Prinzip gehts tatsächlich darum, dass du am Anfang erst 8 Vertices hast, und sich deren Anzahl mit jeder 'Kollision' mit dem Fräskopf (in dessen Umgebung logischerweise) verändert. Interessant wirds dann noch, wenn du unterschiedliche Typen von Fräsern hast, denn jeder muss das Mesh anders beeinflussen.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
jjturbo 
      
Beiträge: 516
Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
|
Verfasst: Mo 20.08.07 12:31
Hi,
ich habe mich mal dran gewagt, etwas in der Art zu programmieren, das für meine Zwecke ausreicht.
Ich zerlege meinen Block also in Würfel.
Wenn der Fräser einen dieser Blöcke berührt, dann werfe ich ihn weg (FreeAndNil) und im frei gewordenen Raum erstelle ich kleinere Blöcke. Wenn der Fräser einen dieser kleineren Blöcke berührt, so wird dieser auch wieder entfernt und im frei geworden Raum wiederum kleinere Blöcke erstellt. Sollten diese mit dem Fräser kollidieren werden sie auch wieder entfernt und der Raum bleibt frei.
So weit so gut. das Aufteilen in kleinere Blöcke klappt wunderbar, wenn ich sie mit der Maus anklicke.
Wenn ich das ganze aber mit Hilfe eines CollisionManager mache, bekomme ich jede Menge Zugriffsverletzungen, wenn ich "CollisionManager1.CheckCollisions" aufrufe.(Momentan per Timer alle 500ms)
Geht da irgendetwas zu schnell? Wie kann ich den Fehler eingrenzen?
_________________ Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
|
|
jjturbo 
      
Beiträge: 516
Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
|
Verfasst: Di 21.08.07 08:29
Ich habe jetzt mal mein Beispielprojekt beigefügt.
Ich bekomme bei den Kollisionen immer wieder "Zugriffsverletzung bei Adresse 00000000", ich verstehe aber nicht warum.
Kann mir jemand sagen, woran das liegt? Ist es ein Problem, wenn der CollisionManager zu viele Kollisionen auf einmal registriert?
Einloggen, um Attachments anzusehen!
_________________ Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Di 21.08.07 08:40
Mal abgesehn von dem schrecklich formatieren Source  - ohne die _AnlgCC.dcu kann ich nicht viel anfangen.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
jjturbo 
      
Beiträge: 516
Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
|
Verfasst: Di 21.08.07 08:46
Sorry, ersetz mal die ersten Zeilen durch: Delphi-Quelltext 1: 2: 3:
| uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, GLWin32Viewer, GLMisc, GLScene, GLObjects, StdCtrls, GLCadencer, GLCollision, ExtCtrls; |
...da waren noch irgendwelche alten Uses-Klauseln mit drin. Ist so ein Ausprobier-Projekt, daher auch dei wilden Formatierungen 
_________________ Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Di 21.08.07 10:07
Also ich habe keine ZV bekommen und die Steine wurden auch entfernt. Lediglich beim Beenden kamen etwa 1000 Runtime-Errors.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
arj
      
Beiträge: 378
Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
|
Verfasst: Di 21.08.07 10:08
Eventuell bringt dir dieses Paper noch was.
Da gehts zum Beispiel darum wie man modeliert, wenn einem Teddy der Arm abgerissen wird.
Aber vielleicht ist da ja sowas ähnliches drin wie du brauchst.
|
|
|