Скорость навигации по умолчанию в Forge Viewer

Как можно изменить скорость навигации по умолчанию в Forge Viewer? Настройка по умолчанию слишком быстрая для моих образцов моделей. Я хотел бы написать код, чтобы скорость можно было изменить во время сеанса.


person Ole Magne Kvindesland    schedule 16.01.2017    source источник
comment
Здравствуйте, скорость навигации (Pan, Walk, Zoom) задается приватными переменными userlookspeed, userZoomSpeed, userPanSpeed ​​в viewer3d.js. хотя кажется, что нет установленного метода или возможности переопределить удаленные функции. Я боюсь, что при подключении модели на Forge (подключение к онлайн-просмотрщику 3d.js) изменить скорость может быть невозможно. Хотя, если ваше веб-приложение загрузило данные автономной модели на ваш сервер (это означает, что на вашем сервере будет предоставлен локальный файл viewer3d.js), вы можете попытаться изменить эти переменные «локального» файла viewer3d.js.   -  person Xiaodong Liang    schedule 16.01.2017
comment
Привет, наша команда инженеров дважды подтвердила, что текущая реализация инструмента от первого лица не позволяет переопределить эти значения. Хотя вы можете попробовать удерживать клавишу SHIFT при навигации. Это сделало бы это немного медленнее.   -  person Xiaodong Liang    schedule 18.01.2017


Ответы (2)


Скопируйте существующий инструмент навигации из реализации viewer3D.js, измените параметры скорости по своему усмотрению или предоставьте динамические методы для этого из своего приложения, а затем сделайте его активным.

Вы можете проверить реализацию OrbitDollyPanTool L#14545 в viewer3D.js.

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;
}; 
person Philippe    schedule 20.01.2017

Недавно я узнал, что вы можете использовать viewer.navigation.fitBounds(true, THREE.Box3), что повлияет на скорость навигации, чтобы соответствовать расширениям, определенным этими границами.

person Philippe    schedule 29.07.2017