1

如何在 Forge Viewer 中更改默认导航速度?对于我的示例模型,默认设置太快了。我想编写代码,以便在会话期间可以更改速度。

4

2 回答 2

2

从 viewer3D.js 实现中复制现有导航工具,根据需要修改速度参数或公开方法以从您的应用程序动态执行此操作,然后将其设置为活动状态。

您可以在 viewer3D.js 中检查 OrbitDollyPanTool L#14545 的实现

Autodesk.Viewing.OrbitDollyPanTool = function( viewerImpl, viewerApi ){
    var avp = Autodesk.Viewing.Private;
    var _this = this;
    var kScreenEpsilon = 0.001;
    var kEpsilon = 0.00001;
    var kAutoDeltaZ  = 1.5;         // Dolly increment
    var kAutoDeltaXY = 0.01;
    var kAutoScreenXY = 20;
    var kDollyDragScale = 100.0;
    var kDollyPinchScale = 0.5;
    var kOrbitScale = 2.0;

    // ...

该工具的实例化如下(L#40923):

Viewer3D.prototype.createControls = function( ) {
    var self = this;
    var impl = self.impl;

    self.navigation = new av.Navigation(impl.camera);
    self.__initAutoCam(impl);

    self.utilities = new av.ViewingUtilities(impl, self.autocam, self.navigation);
    self.clickHandler = new av.DefaultHandler(impl, self.navigation, self.utilities);
    self.toolController = new av.ToolController(impl, self, self.autocam, self.utilities, self.clickHandler);
    self.toolController.registerTool( new av.GestureHandler(self) );

    self.toolController.registerTool( av.theHotkeyManager );
    self.toolController.activateTool( av.theHotkeyManager.getName() );

    self.registerUniversalHotkeys();

    self.toolController.registerTool( new av.OrbitDollyPanTool(impl, self) );
    self.toolController.activateTool( "gestures" );

    return self.toolController;
}; 
于 2017-01-20T06:56:17.460 回答
1

我最近发现您可以使用viewer.navigation.fitBounds(true, THREE.Box3)它将影响导航速度以匹配由这些边界定义的扩展。

于 2017-07-29T04:57:02.293 回答