TransformManipulator.kl

Types

TransformManipulator (object)

バージョン 1.12.0 で追加.

The TransformManipulator combines a PositionGizmosManager and a OrientationGizmosManager to support translation and rotation in 3d.

The Transform manipulator displays a collection of different gizmos, each for manipulating the transforms in a different way.

When a TransformManipulator is constructed, it automatically constructs the PositionGizmosManager and OrientationGizmosManager, which in turn construct Gizmo manages for each axis and plane of manipulation.

The TransformManipulator can be used to manipulate a group of transforms via the GizmoManipulationCallback. As the gizmos are manipulated, the computed delta transforms that are then sent to the GizmoManipulationCallback callback for handling. It is the callbacks responsibility to apply the delta to the targets and generate the undo/redo objects.

/*
** Example: TransformManipulator-Example
*/

require InlineDrawing;

operator entry() {

  // this is a singleton
  InlineDrawing drawing = OGLInlineDrawing_GetInstance();


  InlineTransform groupTransform = StaticInlineTransform('groupTransform', Xfo(Vec3(0.0, 0.0, 0.0)));
  drawing.getRoot().addChild(groupTransform);

  // Setup the manipulator
  {
      Ref<EventDispatcher> eventDispatcher = EventDispatcher_GetInstance();

      TransformManipulationCallback callback();
      callback.addTarget(groupTransform);

      TransformManipulator transformManipulator = TransformManipulator(groupTransform, 140.0, callback);
      eventDispatcher.registerManipulator(transformManipulator);
  }
  {
    InlineShader surfaceShader = OGLSurfaceShader('surface');
    drawing.registerShader(surfaceShader);

    InlineMaterial phongMaterial = surfaceShader.getOrCreateMaterial("phong");

    Size offset;

    // create some spheres

    {
      PolygonMesh sphere();
      Size detail = 24;
      Scalar radius = 1.0;
      sphere.addSphere(Xfo(), radius, detail, true, true);

      InlineMeshShape shape = InlineMeshShape('sphere', sphere);
      drawing.registerShape(shape);

      {
        InlineTransform transform = StaticInlineTransform('sphereTransform', Xfo(Vec3(4.0, 0.0, 0.0)));
        groupTransform.addChild(transform);

        InlineInstance instance = InlineInstance('sphere1', transform, shape);
        instance.setInstanceUniform(InlineUniform('u_diffuseColor', Color(1.0, 0.0, 0.0)));

        instance.addMaterial(phongMaterial);
      }

      {
        InlineTransform transform = StaticInlineTransform('sphereTransform', Xfo(Vec3(0.0, 4.0, 0.0)));
        groupTransform.addChild(transform);

        InlineInstance instance = InlineInstance('sphere2', transform, shape);
        instance.setInstanceUniform(InlineUniform('u_diffuseColor',  Color(0.0, 1.0, 0.0)));

        instance.addMaterial(phongMaterial);

      }
      {
        InlineTransform transform = StaticInlineTransform('sphereTransform', Xfo(Vec3(0.0, 0.0, 4.0)));
        groupTransform.addChild(transform);

        InlineInstance instance = InlineInstance('sphere3', transform, shape);
        instance.setInstanceUniform(InlineUniform('u_diffuseColor', Color(0.0, 0.0, 1.0)));

        instance.addMaterial(phongMaterial);
      }
    }
  }
  {
    // activate the transform manipulator
    Ref<EventDispatcher> eventDispatcher = EventDispatcher_GetInstance();
    eventDispatcher.pushManipulator('TransformManipulator');
  }

}

/*
** Output:
(stdin):19:28: error: 'Ref<EventDispatcher>': type not registered
(stdin):21:7: error: 'TransformManipulationCallback': type not registered
(stdin):22:7: error: 'callback': symbol not found
(stdin):24:28: error: 'TransformManipulator': type not registered
(stdin):25:7: error: 'eventDispatcher': symbol not found
(stdin):79:26: error: 'Ref<EventDispatcher>': type not registered
(stdin):80:5: error: 'eventDispatcher': symbol not found


*/

Members

Scalar coneThreshold  
GizmoHandler activeGizmoHandler  
GizmoHandler mouseOverGizmoHandler  
GizmoCollector collector  
InlineInstance[] gizmos  
PositionGizmosManager positionGizmosManager The manager for the position gizmos
OrientationGizmosManager orientationGizmosManager The manager for the orientation gizmos
ManipulationMode mode The mode determining which gizmos are currently visible.

Methods

  TransformManipulator ( in TransformManipulator other )
  TransformManipulator ( io InlineTransform parent, in Scalar size, in GizmoManipulationCallback callback )
  TransformManipulator ()
TransformManipulator clone ? ()
  onDisable ! ()
  onEnable ! ()
  onEvent ! ( io Event event )
  setManipulationMode ! ( in ManipulationMode mode )