Autodesk 3ds Max Extension 1 中包含几项新功能和针对 Max Creation Graph 的改进。
您可以使用 MCG 创建自定义动画控制器,根据图形设置对象的可设置动画的参数。“输出”类别中有几个适用于各种控制器(例如:浮点、位置、旋转、变换及其他)的新节点。您还可使用新的隐式参数“变换控制器: 矩阵”获取父对象的值,以便在计算中使用。
成功保存并评估基于 MCG 的控制器之后,它们将自动显示在“轨迹视图”和“运动”面板上相应的“指定控制器”窗口中。
系统提供了多个采样控制器。您可从菜单中应用这些控制器,或将其用作创建您自己的控制器示例。
现在,MCG 支持创建模拟。模拟可根据上一帧的值迭代更新。您可以为修改器、控制器和几何体创建模拟图形。
从模拟图形中创建的工具具有额外的“模拟”卷展栏。单击“重置模拟”后,缓存将会清除,且模拟将从开始重新运行到当前时间。此操作非常有用,例如,如果您已修改该工具的任何输入,且希望在当前帧上看到正确的结果。
有关详细信息,请参见创建模拟图形。
“Bullet Physics”类别包含几个节点,支持根据 Bullet Phsics 引擎创建刚体模拟。您可以创建一个世界并添加对象和属性,然后在更新世界后,获得世界空间的变换。
MCG 1 DOF 旋转弹簧控制器和 MCG 3 DOF 旋转弹簧控制器这两个基于 MCG 的采样控制器是使用 Bullet Physics 节点构建的模拟示例。
有关如何使用 Bullet Physics 节点创建自己的模拟的概述,请参见构建 Bullet 刚体模拟。
支持四维向量。除了用于构建 XYZW 和 RGBA 动画控制器的输出:Point4 控制器以外,Vector4 类别中还存在用于从单一值构建 Vector4 值、从 vector4 中获取单一值以及在 vector4 与四元数之间进行转换的节点。
“阵列”类别中的新 *EmptyArray 节点可用于创建各种类型的阵列(例如,矩阵或 Vector3),而无需向阵列添加特定项。
以下是 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)
参考生成器:ReferenceMaker()
时间:Int32()
变换控制器:Matrix()
输入:cache()
输入:Constraint()
输入:RigidBodyDynamics()
输入:World()
输出:Color Controller(value)
输出:Float Controller(value)
输出:Point3 Controller(value)
输出:Point4 Controller(value)
输出:Position Controller(value)
输出:Rotation Controller(value)
输出:Scale Controller(value)
输出:Transform Controller(value)
参数:IArray<INode>()
参数:IArray<Single>()
参数:Vector3()
通过:cache(x)
通过:Constraint(x)
通过:RigidBodyDynamics(x)
通过:World(x)
NodeSingleTupleFirst(Tuple2)
NodeSingleTupleSecond(Tuple2)