Autodesk 3ds Max Extension 1 inclut plusieurs nouvelles fonctions et améliorations pour Max Creation Graph.
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 ou les utiliser comme exemples pour créer vos propres contrôleurs.
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.
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.
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.
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.
Voici une liste des nouveaux opérateurs et composés disponibles dans MCG.
GetRayToSurfaceIntersections(nodes, rayToSurfacePivot, rayOrigin, flipAxis, rayAxis)
MeshFromNodeAtTime(n, time)
NodePosAverage(values)
WeightedAveragePosition(Targets, Weights)
WorldTransformAtTime(node, time)
AnimationPlaybackEnd()
AnimationStartTime()
FramesToSeconds(frames)
FramesToTicks(frames)
SecondsToFrames(seconds)
SecondsToTicks(seconds)
TicksToFrames(ticks)
TicksToSeconds(ticks)
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()
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)
CreateSimulation(constraints, rigidBodies, startTime, gravity, active, preUpdateFn, currentTime)
FilterAndSortRayIntersections(intersections, rays)
IfSingleGreaterThanZero(Value, True, False)
LimitSingle(Value, LimitOne, LimitTwo)
SwitchOneTwoThree(switchValue, valueIfOne, valueIfTwo, valueIfThree)
CanDecompose(matrix)
ConstructBasisFromUpFwd(upAxis, targetUp, forwardAxis, targetForward)
Determinant(matrix)
FlipMatrixBasis(matrix)
GetMatrixRotation(matrix)
GetMatrixScaling(matrix)
SetMatrixFrom3Rows(Row1, Row2, Row3)
RayFromMatrices(origin, destination)
RayFromMatrixAxis(origin, flipAxis, axis)
RayIntersectsBox(ray, box)
RayIntersectsPlane(ray, plane)
RayIntersectsSphere(ray, sphere)
GetMapChannel(mesh, id)
GetMapChannelName(id)
QuaternionToVector4(q)
Vector4(x, y, z, w)
Vector4ToQuaternion(v)
Vector4W(v)
Vector4X(v)
Vector4Y(v)
Vector4Z(v)
NormalizedCross(v1, v2)
NormalizedCrossWithFlip(Flip, VecOptFlipped, Vec2)
PerpToVecInPlane2ndVec(Flip, Vec, Vec2FirstCross)
VecNegateIf(Condition, Vec)
Reference Maker: ReferenceMaker()
Time: Int32()
Transform Controller: Matrix()
Input: cache()
Input: Constraint()
Input: RigidBodyDynamics()
Input: World()
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)
Parameter: IArray<INode>()
Parameter: IArray<Single>()
Parameter: Vector3()
Pass-through: cache(x)
Pass-through: Constraint(x)
Pass-through: RigidBodyDynamics(x)
Pass-through: World(x)
NodeSingleTupleFirst(Tuple2)
NodeSingleTupleSecond(Tuple2)