Neue Funktionen in MCG

Autodesk 3ds Max Erweiterung 1 enthält zahlreiche neue Funktionen und Verbesserungen für Max Creation Graph.

MCG Animations-Controller

Sie können MCG zum Erstellen benutzerdefinierter Animations-Controller verwenden, um die animierbaren Parameter eines Objekts basierend auf einem Diagramm festzulegen. Es gibt neue Knoten in der Ausgaben-Kategorie für die verschiedenen Controller-Typen, z. B. Gleitkommazahl, Position, Drehung, Transformieren und andere. Sie können auch den neuen impliziten Parameter Transformations-Controller: Matrix verwenden, um den Wert des übergeordneten Objekts eines Objekts zur Verwendung in Ihren Berechnungen zu erhalten.

Nachdem die MCG-basierten Controller erfolgreich gespeichert und ausgewertet wurden, erscheinen sie automatisch im entsprechenden Fenster Controller zuweisen in den Gruppen Spuransicht und Bewegung.

Mehrere Beispiel-Controller sind verfügbar. Sie können diese aus dem Menü Animation > MCG Controller anwenden oder sie als Beispiele für das Erstellen eigener Controller verwenden.

Zeitbezogene Knoten

Es gibt mehrere Knoten, mit denen es einfacher wird, die Szenenzeit in Diagrammen abzurufen und zu verwenden. Zu diesen Modi gehören:
  • Alle diese Knoten gehören zur neuen 3ds Max Zeit-Kategorie.
  • MeshFromNodeAtTime gehört zur Kategorie 3ds Max Knoten.
  • WorldTransformAtTime gehört zur Kategorie 3ds Max Knoten.
  • time:int32 gehört zur Kategorie Implizite Parameter.

Simulationen

Mit MCG können Sie jetzt die Simulationen erstellen, die iterativ aktualisiert werden, basierend auf den Werten im vorherigen Frame. Sie können Simulationsdiagramme für Modifikatoren, Controller und Geometrien erstellen.

Werkzeuge, die aus Simulationsdiagrammen erstellt wurden, verfügen über ein zusätzliches Simulation-Rollout. Wenn Sie auf Simulation zurücksetzen klicken, werden die Caches gelöscht, und die Simulation wird von Anfang an bis zur aktuellen Zeit erneut ausgeführt. Dies ist beispielsweise nützlich, wenn Sie eine der Werkzeugeingaben geändert haben und im aktuellen Frame die richtigen Ergebnisse sehen wollen.

Weitere Informationen finden Sie unter Erstellen eines Simulationsdiagramms.

Bullet Physics

Die Kategorie Bullet Physics enthält Knoten, mit denen Sie basierend auf der Bullet Physics-Engine Starrkörper-Simulationen erstellen können. Sie können eine Welt erstellen, dieser Objekte und Eigenschaften hinzufügen und dann deren Welt-Transformationen abrufen, nachdem die Welt aktualisiert wurde.

Einige der als Beispiele aufgeführten MCG-basierten Controller, MCG 1 DOF Rotationsfeder-Controller und MCG 3 DOF Rotationsfeder-Controller, sind Beispiele für Simulationen, die mithilfe der Bullet Physics-Knoten erstellt wurden.

Eine Anleitung zum Erstellen eigener Simulationen mithilfe der Bullet Physics-Knoten finden Sie unter Erstellen einer Simulation von steifen Körpern mit Kugeln.

Neue Parametertypen

Es gibt neue Knoten in der Parameter-Kategorie, mit denen Sie Ihre Diagramme mit neuen Datentypen versorgen können:
  • Parameter: IArray<INode> gibt eine Anordnung von Objekten in der Szene an.

  • Parameter: IArray<Single> gibt eine Anordnung von Gleitkommawerten an.
  • Parameter: Vector3 gibt einen 3D-Vektor an. Sie müssen nicht mehr 3 einzelne Parameter verwenden und den Vektor in dem Diagramm erstellen.

Vector4-Unterstützung

Es werden 4D-Vektoren unterstützt. Zusätzlich zu Ausgabe: Point4 Controller zum Erstellen von XYZW- und RGBA-Animations-Controllern gibt es Knoten in der Vector4-Kategorie zum Erstellen von Vector4-Werten aus einzelnen Werten, zum Abrufen von einzelnen Werten aus Vector4-Werten und zur Konvertierung zwischen Vector4-Werten und Quaternions.

Erstellen leerer Anordnungen eines bestimmten Typs

Mit den neuen *EmptyArray-Knoten in der Anordnungen-Kategorie können Sie Anordnungen verschiedener Typen erstellen, z. B. Matrix oder Vector3, ohne dass Sie dazu der Anordnung ein bestimmtes Element hinzufügen müssen.

Neue Operatoren und Verbundelemente

Hier finden Sie eine Liste der neuen Operatoren und Verbundelemente in MCG.

3ds Max-Knoten

  • GetRayToSurfaceIntersections(nodes, rayToSurfacePivot, rayOrigin, flipAxis, rayAxis)

  • MeshFromNodeAtTime(n, time)

  • NodePosAverage(values)

  • WeightedAveragePosition(Targets, Weights)

  • WorldTransformAtTime(node, time)

3ds Max Zeit

  • AnimationPlaybackEnd()

  • AnimationStartTime()

  • FramesToSeconds(frames)

  • FramesToTicks(frames)

  • SecondsToFrames(seconds)

  • SecondsToTicks(seconds)

  • TicksToFrames(ticks)

  • TicksToSeconds(ticks)

Anordnung

  • BitmapEmptyArray()

  • BooleanEmptyArray()

  • BoundingBoxEmptyArray()

  • BoundingFrustumEmptyArray()

  • BoundingSphereEmptyArray()

  • ConstraintEmptyArray()

  • EdgeEmptyArray()

  • Face3EmptyArray()

  • Face4EmptyArray()

  • INodeEmptyArray()

  • Int32EmptyArray()

  • LineEmptyArray()

  • MapChannelEmptyArray()

  • MatrixEmptyArray()

  • PlaneEmptyArray()

  • QuadMeshEmptyArray()

  • QuaternionEmptyArray()

  • RandomEmptyArray()

  • RayEmptyArray()

  • RayTraceIntersectionEmptyArray()

  • RayTraceSceneEmptyArray()

  • RectangleEmptyArray()

  • RigidBodyDynamicsEmptyArray()

  • SingleEmptyArray()

  • StringEmptyArray()

  • TexmapEmptyArray()

  • TriMeshEmptyArray()

  • Vector3EmptyArray()

  • WorldEmptyArray()

Bullet Physics

  • AddBulletObject(world, worldObject)

  • AddConstraint(world, constraint)

  • AddRigidBody(world, rigidBody)

  • CreateGeneric6DofConstraint(rigidBody1, frame1, rigidBody2, frame2, rotationOrder)

  • CreatePoint2PointConstraint(rigidBody1, pivot1, rigidBody2, pivot2, tau, damping)

  • CreatePointConstraint(rigidBody, pivot, tau, damping)

  • CreateRigidBody(xform, offset, convexHull, rigidBodyDynamics, localInertia, isKinematic)

  • CreateRigidBodyDynamics(mass, friction, rollingFriction, restitution, linearDamping, angularDamping)

  • CreateWorld(initialTime)

  • GetCenterOfMass(convexHull)

  • GetNumberOfRigidBodies(world)

  • GetRigidBodyByIndex(world, index)

  • GetRigidBodyConvexHull(rb)

  • GetRigidBodyWorldTransform(world, rb)

  • GetSimulationTime(world)

  • IsRigidBodyKinematic(rb)

  • ResetWorld(world)

  • SetGeneric6DofConstraintAngularDynamics(constraint, damping, bounce, stiffness)

  • SetGeneric6DofConstraintAngularLimit(constraint, lower, upper, reversed)

  • SetGeneric6DofConstraintLinearDynamics(constraint, damping, bounce, stiffness)

  • SetGeneric6DofConstraintLinearLimit(constraint, lower, upper)

  • AddConstraint(world, constraint)

  • SetGravity(world, gravity)

  • SetRigidBodyVelocity(rb, linear, angular)

  • SetRigidBodyWorldTransform(world, rb, m)

  • SetSimulationTime(world, time)

  • StepSimulation(world, step)

  • TraceRigidBody(world, rb)

Verbundelemente

  • CreateSimulation(constraints, rigidBodies, startTime, gravity, active, preUpdateFn, currentTime)

  • FilterAndSortRayIntersections(intersections, rays)

Kontrollstruktur

  • IfSingleGreaterThanZero(Value, True, False)

  • LimitSingle(Value, LimitOne, LimitTwo)

  • SwitchOneTwoThree(switchValue, valueIfOne, valueIfTwo, valueIfThree)

Geometrie - Matrix

  • CanDecompose(matrix)

  • ConstructBasisFromUpFwd(upAxis, targetUp, forwardAxis, targetForward)

  • Determinant(matrix)

  • FlipMatrixBasis(matrix)

  • GetMatrixRotation(matrix)

  • GetMatrixScaling(matrix)

  • SetMatrixFrom3Rows(Row1, Row2, Row3)

Geometrie - Strahl

  • RayFromMatrices(origin, destination)

  • RayFromMatrixAxis(origin, flipAxis, axis)

  • RayIntersectsBox(ray, box)

  • RayIntersectsPlane(ray, plane)

  • RayIntersectsSphere(ray, sphere)

Geometrie - TriMesh

  • GetMapChannel(mesh, id)

  • GetMapChannelName(id)

Geometrie - Vector4

  • QuaternionToVector4(q)

  • Vector4(x, y, z, w)

  • Vector4ToQuaternion(v)

  • Vector4W(v)

  • Vector4X(v)

  • Vector4Y(v)

  • Vector4Z(v)

Geometrie - Vektoren

  • NormalizedCross(v1, v2)

  • NormalizedCrossWithFlip(Flip, VecOptFlipped, Vec2)

  • PerpToVecInPlane2ndVec(Flip, Vec, Vec2FirstCross)

  • VecNegateIf(Condition, Vec)

Implizite Parameter

  • Referenzerstellung: ReferenceMaker()

  • Zeit: Int32()

  • Transformationscontroller: Matrix()

Eingaben

  • Eingabe: cache()

  • Eingabe: Constraint()

  • Eingabe: RigidBodyDynamics()

  • Eingabe: World()

Ausgaben

  • Ausgabe: Color Controller(value)

  • Ausgabe: Float Controller(value)

  • Ausgabe: Point3 Controller(value)

  • Ausgabe: Point4 Controller(value)

  • Ausgabe: Position Controller(value)

  • Ausgabe: Rotation Controller(value)

  • Ausgabe: Scale Controller(value)

  • Ausgabe: Transform Controller(value)

Parameter

  • Parameter: IArray<INode>()

  • Parameter: IArray<Single>()

  • Parameter: Vector3()

Zwangspunkt

  • Zwangspunkt: cache(x)

  • Zwangspunkt: Constraint(x)

  • Zwangspunkt: RigidBodyDynamics(x)

  • Zwangspunkt: World(x)

Tupel

  • NodeSingleTupleFirst(Tuple2)

  • NodeSingleTupleSecond(Tuple2)