Nouveautés relatives à MCG

Autodesk 3ds Max Extension 1 inclut plusieurs nouvelles fonctions et améliorations pour Max Creation Graph.

Contrôleurs d'animation MCG

Vous pouvez utiliser MCG pour créer des contrôleurs d'animation personnalisés pour définir les paramètres animables d'un objet en fonction d'un graphique. Il existe de nouveaux noeuds dans la catégorie Sorties pour différents types de contrôleur, tels que Flottant, Position, Rotation et Transformation, etc. Vous pouvez également utiliser le nouveau paramètre implicite Contrôleur de transformation : matrice pour obtenir la valeur du parent de l'objet à utiliser dans les calculs.

Une fois les contrôleurs basés sur MCG enregistrés et évalués, ils apparaissent automatiquement dans la fenêtre Affecter contrôleur appropriée dans le groupe de fonctions Vue piste et Mouvement.

Plusieurs exemples de contrôleurs sont disponibles. Vous pouvez les appliquer à partir du menu Animation > Contrôleurs MCG ou les utiliser comme exemples pour créer vos propres contrôleurs.

Noeuds temporels

Il existe plusieurs noeuds qui permettent de facilement obtenir et utiliser le temps de la scène dans les graphiques. Ces derniers sont les suivants :
  • Tous les noeuds de la nouvelle catégorie de 3ds Max.
  • MeshFromNodeAtTime dans la catégorie Noeuds 3ds Max.
  • WorldTransformAtTime dans la catégorie Noeuds 3ds Max.
  • time:int32 dans la catégorie Paramètres implicites.

Simulations

MCG permet désormais de créer des simulations mises à jour de manière itérative en fonction des valeurs dans l'image précédente. Vous pouvez créer des graphiques de simulation pour les modificateurs, les contrôleurs et les géométries.

Les outils créés à partir de graphiques de simulation ont un panneau déroulant Simulation supplémentaire. Lorsque vous cliquez sur le bouton Réinitialiser la simulation, les caches sont effacés et une nouvelle simulation est exécutée. Cela est utile, par exemple, si vous avez modifié l'une des entrées de l'outil et souhaitez afficher les résultats corrects dans l'image courante.

Pour plus d'informations, reportez-vous à la rubrique Création d'un graphique de simulation.

Bullet Physics

La catégorie Bullet Physics contient des noeuds qui vous permettent de créer des simulations de corps rigides en fonction du moteur Bullet Physics. Vous pouvez créer un monde, y ajouter des objets et des propriétés, puis obtenir leurs transformations d'espace univers après que l'univers a été mis à jour.

Quelques exemples de contrôleurs basés sur MCG, Contrôleur ressort de rotation MCG 1 DOF et Contrôleur ressort de rotation MCG 3 DOF sont des exemples de simulations générés à l'aide des noeuds Bullet Physics.

Pour une présentation de la création de vos propres simulations à l'aide du noeud Bullet Physics, reportez-vous à la rubrique Création d'une simulation de corps rigides Bullet.

Nouveaux types de paramètres

Il existe de nouveaux noeuds dans la catégorie Paramètres qui vous permettent de fournir de nouveaux types de données à vos graphiques :
  • Paramètre : IArray<INode > spécifie un réseau d'objets dans la scène.

  • Paramètre : IArray<Single> spécifie un réseau de valeurs en virgule flottante.
  • Paramètre : Vector3 spécifie un vecteur 3D. Vous n'avez plus besoin d'utiliser 3 paramètres unique et de construire le vecteur dans le graphique.

Prise en charge de Vector4

Les vecteurs 4D sont pris en charge. Outre Sortie : contrôleur Point4 pour la construction des contrôleurs d'animation XYZW et RGBA, il existe des noeuds dans la catégorie Vector4 pour générer des valeurs Vector4 à partir de valeurs uniques, pour obtenir des valeurs uniques à partir de Vector4 et pour effectuer des conversions entre des Vector4 et des quaternions.

Création de réseaux vides de types spécifiques

Les nouveaux noeuds *EmptyArray dans la catégorie Réseaux vous permettent de créer des réseaux de divers types, tels que Matrice ou Vector3, sans avoir besoin d'ajouter un élément spécifique au réseau.

Nouveaux opérateurs et composés

Voici une liste des nouveaux opérateurs et composés disponibles dans MCG.

Noeuds 3ds Max

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

  • MeshFromNodeAtTime(n, time)

  • NodePosAverage(values)

  • WeightedAveragePosition(Targets, Weights)

  • WorldTransformAtTime(node, time)

Temps 3ds Max

  • AnimationPlaybackEnd()

  • AnimationStartTime()

  • FramesToSeconds(frames)

  • FramesToTicks(frames)

  • SecondsToFrames(seconds)

  • SecondsToTicks(seconds)

  • TicksToFrames(ticks)

  • TicksToSeconds(ticks)

Réseau

  • 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)

Composés

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

  • FilterAndSortRayIntersections(intersections, rays)

Flux de contrôle

  • IfSingleGreaterThanZero(Value, True, False)

  • LimitSingle(Value, LimitOne, LimitTwo)

  • SwitchOneTwoThree(switchValue, valueIfOne, valueIfTwo, valueIfThree)

Géométrie - Matrice

  • CanDecompose(matrix)

  • ConstructBasisFromUpFwd(upAxis, targetUp, forwardAxis, targetForward)

  • Determinant(matrix)

  • FlipMatrixBasis(matrix)

  • GetMatrixRotation(matrix)

  • GetMatrixScaling(matrix)

  • SetMatrixFrom3Rows(Row1, Row2, Row3)

Géométrie - Rayon

  • RayFromMatrices(origin, destination)

  • RayFromMatrixAxis(origin, flipAxis, axis)

  • RayIntersectsBox(ray, box)

  • RayIntersectsPlane(ray, plane)

  • RayIntersectsSphere(ray, sphere)

Géométrie - TriMesh

  • GetMapChannel(mesh, id)

  • GetMapChannelName(id)

Géométrie - Vector4

  • QuaternionToVector4(q)

  • Vector4(x, y, z, w)

  • Vector4ToQuaternion(v)

  • Vector4W(v)

  • Vector4X(v)

  • Vector4Y(v)

  • Vector4Z(v)

Géométrie - Vecteurs

  • NormalizedCross(v1, v2)

  • NormalizedCrossWithFlip(Flip, VecOptFlipped, Vec2)

  • PerpToVecInPlane2ndVec(Flip, Vec, Vec2FirstCross)

  • VecNegateIf(Condition, Vec)

Paramètres implicites

  • Reference Maker: ReferenceMaker()

  • Time: Int32()

  • Transform Controller: Matrix()

Entrées

  • Input: cache()

  • Input: Constraint()

  • Input: RigidBodyDynamics()

  • Input: World()

Sorties

  • Output: Color Controller(value)

  • Output: Float Controller(value)

  • Output: Point3 Controller(value)

  • Output: Point4 Controller(value)

  • Output: Position Controller(value)

  • Output: Rotation Controller(value)

  • Output: Scale Controller(value)

  • Output: Transform Controller(value)

Paramètres

  • Parameter: IArray<INode>()

  • Parameter: IArray<Single>()

  • Parameter: Vector3()

Passage

  • Pass-through: cache(x)

  • Pass-through: Constraint(x)

  • Pass-through: RigidBodyDynamics(x)

  • Pass-through: World(x)

Tuple

  • NodeSingleTupleFirst(Tuple2)

  • NodeSingleTupleSecond(Tuple2)