Zum Inhalt springen

Marionette Symbole /3d-Objekte entlang Pfad verteilen und ausrichten.


Chritian W.

Empfohlene Beiträge

Ich möchte gern ein Netzwerk erstellen, mit welchem ich 3d-Symbole entlang eines Pfades verteilen kann und diese dann Rechtwinklig zum Pfad ausgerichtet werden. Den Ersten Teil der Aufgabe habe ich bereits gelöst (Objekte werden verteilt) jedoch müsste ich ja jetzt irgendwie den Winkel zwischen einem Punkt und dem übernächsten berechnen und so dann das Objekt drehen. Ich hatte gehofft, dass das Netzwerk „Send to Surface“ welches ich hier angehängt habe mir da eine Lösung aufzeigt. Aber ich sehe da nicht so ganz durch. Hat jemand ne Lösung? 

6A14CC84-0F47-4AEC-8F4E-36FFFDF8E28E.jpeg

D14C025D-6097-40D9-BD26-142BA93D89F0.jpeg

33665EE5-A07D-4276-930C-413314C2D90C.jpeg

Send to surface_004Cv2018 v2019.vwx

Link zu diesem Kommentar

Wenn du die Koordinaten von den zwei Punkten kennst, kannst du mit ein wenig Trigo die Tangente berechnen.

 

Allerdings ist dieser Winkel nicht zwingend der genaue Winkel der Tangente.

 

Genauer machen kannst du den Winkel, indem du die Abstände zwischen den Punkten verkleinerst. Oder aber du findest eine Formel zur Berechnung der Winkel, die auf den End- bzw. Kontrollpunkten der Bezierkurve basiert. Ich kenne die Mathematik dahinter allerdings (noch) nicht gut genung, um dir da behilflich sein zu können.

 

Vielleicht hilft dir aber folgender Fakt, den ich vor einiger Zeit per Zufall entdeckt habe.

image.thumb.png.2e3ceb842a97a319d7216001c570347c.png

 

Die grünen Linien sind die Verbindungslinien vom Endpunkt zum Kontollpunkt. Wenn du diese Linen in gleichmässige Stücke (im Bild 1/5) teilst, kannst du die Enpunkte der Stücke verbinden und erhälst Tangenten an die Bezierkurve. Du müsstest demnach "nur" die Tangente finden, die an deinem Punkt schneidet und erhälst einen präszisen Winkel. Eventuell bin ich mit diesem Ansatz auf dem Holzweg, aber es ist zumindest besser als gar nichts.

  • Like 1

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Hier die Mathe dahinter:

image.png.79f282edbd9b25f16e7211256f7205a4.png

 

Suchst du die Tangente auf z.B. 1/4 der Strecke der Bézierkurve, verbindest du die Punkte auf 1/4 der Strecke von A nach B und 1/4 der Strecke von B nach C.

 

Für das beschriebene Problem kannst du jedoch einfach einen "Get Point On Poly"-Node benutzen. Netterweise gibt er gleich auch noch den Tangentenwinkel. Allerdings kannst du den Node nur bei 2D-Pfaden anwenden.

 

Die gleiche Funktion für eine NURBS-Kurve kenne ich grad nicht. Da müsstest du wohl die Methode mit den zwei Punkten mit ganz kleinem Abstand anwenden.

  • Like 1
  • Lieben 1

Vectorworks 2024 - Architektur - Win 10

Link zu diesem Kommentar

Hallo Christian,

super! Hätte ich schon oft gebrauchen können. Allerdings bin ich mit Marionette überhaupt nicht vertraut.

Wie kriegt man das denn zum laufen? Ich hab sowas noch nie gemacht.

Und kann man das dann auch für VW2020 nutzen

MacBook pro 16, Monterey(12.6.1), 2,4 6GHz 8‑Core Intel Core i9, 64 GB Ram, AMD Radeon Pro 5500M mit 8 GB GDDR6

VW 2021 Architektur SP5 R1 (Build 622768), Architektur

VW 2022 Architektur SP5.0.1 R1 (Build 664120), Architektur

 

So gut wie in Rente (leider!): Mac Pro 12 Core, 3,45 Ghz (late 2012), Mojave (10.14.6), 96 GB Ram, AMD Radeon RX 580 Sapphire Pulse 8GB mit VW 2020 Architektur SP6 R1 (Build 580724), Architektur

Link zu diesem Kommentar

Hier noch mal eine überarbeitete Variante, Sorry, Beim ausarbeiten einer Anleitung ist mir aufgefallen dass es bei bestimmten Körpern und Polylinien zu falschen Positionierungen gekommen ist. Ich habe die Verbindung zwischen Get Point on Poly und Get dazu entfernt.

 

Für 2020 konnte ich leider nicht zurückkonvertieren - kommt eine Error-Meldung.

Eine Anleitung für die Anwendung stelle ich die Tage noch ein.

marionette Symbole Verteilen 1.01.vwx

  • Like 3
Link zu diesem Kommentar

Hallo Christian

 

Hast du dir schon einmal überlegt, aus dem Netzwerk einen Menübefehl zu machen? Meiner Ansicht nach ist ein Netzwerk auf der KE sehr unschön und es sollten nur Mrnt-Objekte oder Menübefehle verwendet werden. Die Eingaben kannst du mit Nodes aus der Gruppe User Interaction entgegennehmen. Ergibt zwar ein paar Dialogfelder, ist aber schöner als all die Mrnt-Klassen und Verläufe zu importieren, die Eingaben trotzdem manuel zu machen und anschliessend das Netzwerk auszuführen.

Zudem hast du damit den Vorteil, dass du ein Objekt selektiert werden kann, der Befehl wird ausgeführt und die Symbole anschliessend verteilt werden.

 

Für die Symbolauswahl könnte je nach dem sogar dieser Node umgebaut werden. Klassen kannst du in einem Popup Dialog-Node auflisten.

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Hallo Manuel, Ja für solch fertige Netzwerke, macht das in der Tat Sinn. Muss ich mich noch mal mit bechäftigen. Dieses Netzwerk war eigentlich nur so ne fixe Zwischenidee, zu dem eigentlichen Projekt mit welchem ich ja eigentlich zu Marionette gekommen bin. - und jetzt entdecke ich erst die unglaublich vielfältigen Möglichkeiten, von denen ich wahrscheinlich gerade mal- einen Bruchteil verstanden habe  - was auch daran liegt, dass viele Inhalte ausschließlich in englischer Sprache verfügbar sind. 

  • Like 1
Link zu diesem Kommentar
  • 2 Wochen später...
Am 9.2.2021 um 21:26 schrieb Manuel Roth:

Hallo Christian

 

Hast du dir schon einmal überlegt, aus dem Netzwerk einen Menübefehl zu machen? Meiner Ansicht nach ist ein Netzwerk auf der KE sehr unschön und es sollten nur Mrnt-Objekte oder Menübefehle verwendet werden. Die Eingaben kannst du mit Nodes aus der Gruppe User Interaction entgegennehmen. Ergibt zwar ein paar Dialogfelder, ist aber schöner als all die Mrnt-Klassen und Verläufe zu importieren, die Eingaben trotzdem manuel zu machen und anschliessend das Netzwerk auszuführen.

Zudem hast du damit den Vorteil, dass du ein Objekt selektiert werden kann, der Befehl wird ausgeführt und die Symbole anschliessend verteilt werden.

 

Für die Symbolauswahl könnte je nach dem sogar dieser Node umgebaut werden. Klassen kannst du in einem Popup Dialog-Node auflisten.

Ich bin dabei das ganze als Menübefehl zu kreieren. Es stellen sich jedoch für mich derzeit zwei Herausforderungen, mit welchen ich nicht weiter komme:

1. Die Criterienauswahl auf die drei Sachverhalte „Ebenenauswahl, Objekttypauswahl, Klassenauswahl“ zu reduzieren - da ich bei dem Criteria Dialog immer wieder alles von neuem eingeben muss. - gibt es hierfür eine Lösung?  Alternativ wäre auch zu überlegen, das entsprechende Objekt durch Auswahl anzuwählen. Leider funktioniert das mit dem Criterium „Objekt ist aktiv“ nicht.

2. Der Node „Get Symbol from Folder“ wäre ideal für dieses Netzwerk, leider bin ich nicht im Stande diesen so umzubauen, dass es ein Userinteraction Dialog wird. Aber vielleicht hat ja noch jemand eine Idee dazu.

Link zu diesem Kommentar

Die Objektauswahl wäre auch die Art, wie ich das ganze Lösen würde. Habe aber seit kurzem auch Probleme damit und weiss noch nicht genau, woran es liegt. Grundsätzlich würdest du aber im Objects by Criteria-Node einfach nach Objektauswahlstatus filtern und im Menübefehl sollte alles funktionieren.

Für den Get Symbol from Folder habe ich dir eine Version davon erstellt, die bei jedem Ausführen den Dialog erstellt. Wiederum nur als Code, da ich dir kein Studentenversionfiles senden kann.

 

Get Symbol from Folder.txt

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar
vor 3 Stunden schrieb Manuel Roth:

Die Objektauswahl wäre auch die Art, wie ich das ganze Lösen würde. Habe aber seit kurzem auch Probleme damit und weiss noch nicht genau, woran es liegt. Grundsätzlich würdest du aber im Objects by Criteria-Node einfach nach Objektauswahlstatus filtern und im Menübefehl sollte alles funktionieren.

Für den Get Symbol from Folder habe ich dir eine Version davon erstellt, die bei jedem Ausführen den Dialog erstellt. Wiederum nur als Code, da ich dir kein Studentenversionfiles senden kann.

 

Get Symbol from Folder.txt 4 kB · 1 download

Manuel, hervorragend, bin begeistert.

 

meinst du du schaffst es auch die Ordnerauswahl auch als Dialogabfrage einzubauen oder zu entfernen, dass könnte für Verwirrung sorgen, da er ja jedesmal eine Art Fehlermeldung bringt, wenn er den Ordner nicht findet.

Link zu diesem Kommentar
  • 8 Monate später...

Moin,

 

stark Jungs, was ihr hier macht, ich lerne jeden Tag dazu.

 

ABER gibt es das "Get Symbol from Folder" auch in der Form, dass man NICHT NUR beim Ausfuehren der Marionette ein Symbol auswaehlt, sondern einen Pulldownbutton in der OIP erzeugt, wo dann diese WIRKLICH TOTAL GEILE, optische Auswahl der Symbole moeglich ist?

 

Ich habe hier naemlich n-Symbole die ich gerne mit solch einem Pulldownmenu auswaehlen muss.

 

gruß KC

HP Z6 G4  Intel(R) Xeon(R) W-3223 CPU @ 3.50 GHz - NVIDIA Quadro RTX 4000

VWX IC 2023 SP7-F7 R1  Windows 10 64 GB  64 bit

Link zu diesem Kommentar
Am 2.11.2021 um 13:09 schrieb kingchaos:

Moin,

 

stark Jungs, was ihr hier macht, ich lerne jeden Tag dazu.

 

ABER gibt es das "Get Symbol from Folder" auch in der Form, dass man NICHT NUR beim Ausfuehren der Marionette ein Symbol auswaehlt, sondern einen Pulldownbutton in der OIP erzeugt, wo dann diese WIRKLICH TOTAL GEILE, optische Auswahl der Symbole moeglich ist?

 

Ich habe hier naemlich n-Symbole die ich gerne mit solch einem Pulldownmenu auswaehlen muss.

 

gruß KC

 

Hallo KC,

 

ich bin mir ziemlich sicher, dass die Marionette-Widgets das nicht hergeben. Wenn das möglich wäre, hätte ich "Get Symbol from Folder" auf diese Weise umgesetzt.

Da bleibt nur das Verwenden mehrerer solcher benannter "Get Symbol from Folder" Nodes. Allerdings gibt es mit der Mehrfachnutzung eines gleich benannten Knopfes in Vectorworks momentan noch einen Fehler, der mit Vectorworks 2022 SP2 behoben sein wird.

  • Like 1

Gruß


Antonio Landsberger

ComputerWorks GmbH

http://www.computerworks.de

Link zu diesem Kommentar

Hallo KC,

 

diese Art von Dropdown im OIP hat zwei große Nachteile:
1) Es kann keine Bilder anzeigen. Bei einer Liste teils kryptischer Namen ist eine Vorschau von Vorteil.

2) Die Liste wird nicht dynamisch ständig neu generiert - hierfür muss das Node ausgeführt werden. Im Fall der Texturen ist das kein Thema, weil auf die Texturen zurückgegriffen wird, die in der Bibliothek hinterlegt sind, nicht die Texturen, die im Dokument gesichert sind.

Gruß


Antonio Landsberger

ComputerWorks GmbH

http://www.computerworks.de

Link zu diesem Kommentar

ahjo,

 

aber ich kann doch die Symbole auch in der BIbliothek ablegen? Das waere sogar sehr sinnvoll.

 

Eine grafische Auswahl brauche ich da nicht zwingend.

 

Warum kann man denn das Dropdownmenue NICHT per klick in der OIP starten sondern muss es beim Scriptstart haben?

 

Vielleicht moechte ich ja voreingestellte Symbole vermerken, die nicht zwingend ersetzt werden.

HP Z6 G4  Intel(R) Xeon(R) W-3223 CPU @ 3.50 GHz - NVIDIA Quadro RTX 4000

VWX IC 2023 SP7-F7 R1  Windows 10 64 GB  64 bit

Link zu diesem Kommentar

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
  • Forenstatistik

    • Themen insgesamt
      23,5Tsd
    • Beiträge insgesamt
      120,8Tsd
×
×
  • Neu erstellen...