Parametrische Struktur aus freecad in three.js laden

OP #8101262
Lesenswert?
• ▲
▼

Hallo,

ich finde es ziemlich umständlich in three.js Figuren zu erstellen, die stark von den Grundformen abweichen. Ich habe in Freecad einige Modell, die ich parametrieren kann, z.B. Durchmesser, Größe, Anzahl an Löchern, Größe der Löcher etc.

Gibt es eine Möglichkeit, so eine Form + die Parametik in three.js einzuladen und daraus eine Geometry zu erzeugen? Dann könnte ich sämtliche Formen wirklich in einem 3D Programm erzeugen und muss da nicht mit Vectors, Points und Lathe in three arbeiten.

Ich habe bereits chatgpt gefragt und der erzählt etwas von Blender, GLB, freecad mit python starten. Aber das klingt alles langsam und umständlich.

Ich werde doch wohl nicht der erste sein, der ein parametrisches Model extern erzeugen möchte und dann in three importieren und parametrieren möchte?

Kennt da jemand Lösungen?

#8101285
Lesenswert?
• ▲
▼

Max M. schrieb:

Aber das klingt alles langsam und umständlich.

Kommt halt darauf an, was Du machen willst und was die Anforderungen sind.

Ja, über ein externes Programm zu gehen, klingt erstmal holprig, macht aber dann Sinn, wenn die Fernsteuerbarkeit gegeben ist und sich das Programm dann 1:1 ferngesteuert verhält.

Denn das bedeutet dann gleichzeitig, dass sämtliche Logik, die die GUI-Variante anwendet, auch im Skript funktioniert.

Es ist gibt kaum etwas unangenehmeres, als wenn sich das gleiche Programm unterschiedlich verhält. Da sucht man sich nen Wolf und wenn man die Ursache gefunden hat, stellt man fest, dass man es eh nicht ändern kann.

Wie häufig musst Du denn das Konstrukt anwenden?

#8101296
Lesenswert?
• ▲
▼

Wenn die Parameter Abhängigkeiten haben, und es im Modell diverse Constraints gibt, wird das halt entsprechende Logik / Solver brauchen, um die finale Geometrie zu berechnen, sowie etwas um die Formate die die Daten beinhalten können zu laden, und das wird in three.js wohl kaum alles fertig mit drin sein. Da müsste man eigentlich fast freecad nach wasm kompilieren, und das wird nicht trivial sein.

Mit three.js selbst kenne ich mich nicht so aus, aber ein wenig mit WebGL / GLES / GLSL allgemein. Hier geht es erstmal um die Geometrie / Vertex Shader). Wir haben die Punkte (Vertices), die haben Attribute (Position, Farbe, etc.). Und dann gibt es noch Uniforms, im Grunde eine Variable, die man setzen kann, bevor der Shader läuft.
Eine bekannte Technik, mit der gewisse simple Animationen möglich sind, sind keyframes. Man hat den momentanen und nächsten Keyframe, also die Anfangs und Endparameter des Animationsschritts, und interpoliert linear dazwischen. neu=start*(1-t)+ende*t; oder equivalent neu=start+(ende-start)*t;. Kann man auch im Shader machen, start und ende wären die attribute, t wäre ein uniform.

Nun normalerweise hat man mehrere Keyframes für längere Animationen, und interpoliert dort immer zwischen 2 davon. Aber man könnte durchaus auch linear zwischen mehr als nur 2 Keyframes interpolieren, und man muss nicht zwangsweise die Zeit dafür nehmen. Oder eventuell könnten wir versuchen, das ganze stattdessen als Lineare Kombination von Parametern zu betrachten. Also quasi:

1
position = vec4(0,0,0,1);
2
for(int i=0; i<n; i++)
3
  position.xyz += richtung[i] * parameter[i];

Eine Keyframe Animation zwischen 2 Frames kann man damit so abbilden: richtung[0] ist die Startposition, parameter[0] ist 1, richtung[1] ist (ende-start), parameter[1] ist der Wert zwischen 0 und 1, also was vorher t war.

Nun, das ist nur ein Beispiel. Damit müsste sich alles abbilden lassen, wo sich am Ende eine lineare Kombination von Parametern ergibt. Das wird vermutlich weniger flexibel sein, als was man mit Freecad Parametern und Constraints machen kann, aber ich denke damit kann man trotzdem erstaunlich viel abbilden.
Das Hauptproblem wäre dann aber, die Freecad modele in diese Form umzurechnen, das wird nicht immer einfach so möglich sein, manchmal womöglich gar nicht.
(Das Heisst unter anderem, die Parameter müssen untereinander unabhängig sein, sonst braucht man einen Solver).

: Bearbeitet durch User

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren