1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Управление камерой в Maya клавишами наподобие Coun

Тема в разделе "Maya", создана пользователем -, 27 янв 2003.

Модераторы: Dark™, Skif
  1. Guest

    Добрый вечер!
    По заданию для смоделированного уровня к игре требовалось предварительно в Maya "проиграть" созданный уровень, передвигаясь по нему с помощью клавиш, в идеале как это используется в CounterStrike/
    Проблема - длительное удерживание на кнопку не выполняет никаких действий:-(( Приходится для перемещения щелкать по кнопке с частотой дятла, только в таком случае выполняются команды перемещения камеры.
    Мои поиски скриптов, плагинов не дали никаких результатов для решения этой проблемы.
    Может кто нибудь в курсе как решить этот вопрос?

    Не решается также вопрос, как назначить поворот камеры на перемещение мыши, я уже не надеюсь на решение вопроса привязки поворота камеры к мыши :-((

    Mike
     
  2. Guest

    Сам я левел дизайнер на Firestarter`е (http://www.firestarter-game.com/),
    и я тоже , было время с этим игрался.
    Но руки не дошли довести до конца.
    Остановился я на кнопко-щёлкании (с тоё же частотой , дельта).
    Идеи правда есть.
    Есть такая штука - scriptJob. Ну знаеш вообщем наверно.
    Решение:
    global proc moveForw(string $cameraName)
    {
    global float $lastCamMove;
    if ( $lastCamMove== 0.0 || (`timerX` - $lastCamMove)> 0.05 ) {
    move -r ... $cameraName;
    }
    }

    На клавишу вешаеш
    if(`scriptJob -exist ....`)
    { scriptJob -kill ... //Нужно создать глобальную переменную $camMoveSJob и по ней находить scriptJob .
    }
    else
    scriptJob -idle 1 "moveForw";
    // ----------
    То есть на клавишу вешаеш scriptJob -idle true который каждые 0.05 сек двигает камеру.
    И, соответсвенно на отнускание клавиши : scriptJob -kill .
    Попробуй.
    Для движения мышой. Ну только через Pan Tool или как там его. Прийдется держать мышу нажатой.
    П.С. scriptJob -idle 1 - жрёт все ресурсы. В доке написано, почитай.
    П.П.С. Если напишеш, поделись. А то у меня руки так и не дошли.
    П.П.П.С. Извини если туманно написал. Но должно сработать.
    Насчет мышки : я здалал полёт камеры, и всё с клавиатуры. (влево - вправо, вверх-вниз).
    Пригодится эта штука много кому. Всем кто моделит нечто большое. Если сцена 10000 на 10000, по пока сфокусируешся там где надо...
    Удачи
     
  3. Guest

    Hey narod a do pramogo exporta pramo v igruhu ne dogadalis???
    u nas vse rabotaet i dasge bolee esli interesno mogu raskazat :))
     
  4. Guest

    Привет!
    Спасиб за подсказку, как выделится время, займусь плотнее scriptJob.
    при положительном исходе - обязательно пришлю свой вариант решения.

    To Buka: - Для прямого экспорта в игру мне приходится предварительно правильно назвать все объекты, триангулировать полигоны, состыковать плоскости, внедрять служебные объекты - что в конечном счете тормозит работу.
    Поэтому гораздо проще прямо в майке протестировать уровень на "играбельность"

    Кстати написал скрипт, включающий и отключающие горячие клавишы управления камерой на кнопки W;S;A;D (подобие CS), так что проблем с кнопками нет.

    Еще раз спасибо за советы.
     
  5. Guest

    Да ты не шариш :) (без наезда) Тут же по приколу любимую майу заскриптить и за-"хот-киить" так, что-бы после недельного отпуска, приходилось неделю вспоминать, и привыкать, как всё работает. Лично у меня в hotkey editor`е в рубрике User разобратся уже почти не возможно. А для моих скриптов пришлось выделить 3 отдельные папки что-бы этот кошмар хоть как-то упорядочить :)
    (ну не так, всё плохо, но почти. Когда начинаеш скриптить майю, остановится сложно)
     
  6. Guest

    Привет!
    Я застрял на команде timerX, никак не получается заставить по таймеру через 3 сек после запуска скрипта сдвинуть кубик :-(
    Может у тебя есть какие то наметки или готовый скрипт таймера?
    Я скрипты начал недавно изучать, поэтому не все просекаю.

    P.S посмотрел ссылку на сайт, классно, кстати с gsc доводилось контактировать в былые времена, когда в Руссобите парился:)
     
  7. Guest

    Чесно говоря, я сам такое не пробовал, но уверен что работать будет.
    Смысл в чем:
    1 . Создать scriptJob -idle ourOwnCoolProc
    Он всё (всё свободное) время будет запускать ourOwnCoolProc.
    Сожрёт все свободные ресурсы компа. (слава богу это не на долго)
    2. ourOwnCoolProc - в ней проверяй сколько времент прошло с прошлого двига кубика. Если больше чем "дельта" -> двиг чуть-чуть. Время запомни.
    Вот.
    timerX -просто возврашает текущее время в float.
    Если всё равно не очень понял, вот тебе мой autoSave, там как-раз я что-то типо этого делал. (засунь текст в vovkaAutoSave.mel и помести в дир. со скриптами, хотя я надеюсь ты это и так знаеш)
    Если хочеш, может писать мне на мыло, хотя возможно наша переписка будет ещё кому-то интересна.
    /***********************************************************
    *
    * Program: vovkaAutoSave
    * Created: 19.09.2002 13:17
    * Author: Vladimir Kazantsev aka BoBaH aka Vovka
    * (Firestarter project, level designer). Network name - "Vovka".
    * Requested: own use
    * Comments: Checks for Last Auto Save time. If > 3 minutes, then writes autosave.ma
    * Usage: Copy it to your scripts directory. Run "vovkaAutoSave on"
    * on start up.
    *
    *
    ************************************************************
    *
    * History:
    *
    * GSC 2002 vovka@gsc-game.kiev.ua
    ************************************************************/
    //
    // description: This procedure performs AutoSave if last auto save was latter then 3 minutes
    //
    global proc tryAutoSave(string $autoSaveName)
    {
    global float $lastAutoSaveTime;
    if ( $lastAutoSaveTime == 0.0 || (`timerX` - $lastAutoSaveTime)> 300.0 ) {
    $lastAutoSaveTime = `timerX`;

    $currentSceneName = `file -q -sceneName`;$currentSceneType = `file -q -type`;
    file -rename $autoSaveName;
    $res = `file -save -type "mayaAscii"`;
    print ("// ! - autosave: " + $res +"\n" );
    file -type $currentSceneType ; file -rename $currentSceneName;

    }
    }

    //
    // description: This procedure Turns AutoSave ON/OFF
    // Usage: vovkaAutoSave("1") or simply "vovkaAutoSave on"
    // "vovkaAutoSave -q" return current state (ponti dlya priezzih :)
    //
    global proc int vovkaAutoSave( string $trigger )
    {
    global int $autoSaveScriptJobNum;
    if ( $trigger == "1" || $trigger == "on" ) {
    if ( $autoSaveScriptJobNum == 0 ) {
    $cmd = "getFileList -folder (`optionVar -q lastLocalWS`+\"/\") -filespec \"*.ma\"";
    $filesExists = eval($cmd);
    $i = 0;
    for(;;$i++)
    {
    $findI = 1;
    for($file in $filesExists)
    {
    if($file == ("autoSave")+$i+".ma" )
    {
    $findI = 0 ;
    break;
    }
    }
    if($findI)break;
    }
    $autoSaveScriptJobNum = eval("scriptJob -event \"SelectionChanged\" \"tryAutoSave autoSave"+$i+"\"");
    print ( "Activating AutoSave \n" );
    return 1;
    }
    else {
    print ( "AutoSave already running\n" );
    return 1;
    }
    }
    else if ( $trigger == "0" || $trigger == "off" ) {
    scriptJob -kill $autoSaveScriptJobNum;
    $autoSaveScriptJobNum = 0 ;
    print ( "Disabling AutoSave \n" );
    return 1;
    }
    else if ( $trigger == "-q" || $trigger == "-query") {
    if ( `scriptJob -exists $autoSaveScriptJobNum` && $autoSaveScriptJobNum != 0 ) {
    return 1;
    }
    return 0;
    }
    return $autoSaveScriptJobNum ;
    }
     
  8. Guest

    Hehe u nas vse napisano i rabotaet
    nikto nishego na zaputalsa.
    polniy export v igruhu i zapust igruhi zanimaest okolo 1 min v srednem.
    Pravda esli zapuskat igruhu na PS2 do eto nemnogo dolshe
    Gruzinsa po seti a ne po firewire1394 v TEST station
     
  9. Guest

    Привет!
    Я в самом деле в поисках решения просмотрел все скрипты автосейва на http://www.highend3d.com/, и запутался в них. Снова обратился к документации ScriptJob, и твоему скрипту, и помучившись в экспериментах, нашел волшебную формулу:))
    scriptJob -e "idle" "команда";

    Таким образом на кнопку Forward я навесил скрипт типа:
    int $forw = `scriptJob -e "idle" "dolly -d -0.5 camera1"`;
    а на отпускание-release кнопки Forward соответственно скрипт-убийца:) :
    scriptJob -kill $forw;
    Все заработало замечательно, осталось за маленьким - перепрограммировать кнопки
    Камера перемещается плавно, даже позволяет одновременно перемещаться и поворачивать, правда с некоторыми рывками.
    Только удивительно, что в Maya, не нашлось возможности горячих клавишей для перепрограммирования мыши, хотя может и есть какой - то скрипт, только надо будет порыться.
    To Buka:
    А ты сам то левел-дизайнер? Ведь проще и приятней путешествуя в Майе, тут же не вставая с кресла, поправить маппинг, геометрию и прочие баги, вместо того, чтобы в игре составлять список замеченных багов, и вновь запускать Майю, но уже с длинным баглистом в руке:))
     
  10. Guest

    Поздравляю!
    Извини, что не очень хорошо тебе всё обьяснил с самого начала.
    Ты как таз сделал так как я и имел в виду.
    Лично у меня руки не дошли.
    Ещё проверь, как у тебя Windows Resourse Manager скачет , когда ты этот
    scriptJob вызываеш. (WinAmp не заикается ?)
    Ну ты это, поделишся правда? (как левел-дизайнер - левел-дизайнеру)
    (я думал это я изврашенец... :)
     
  11. Guest


    ia game-developoer-level-modeller-anonymouse :)))
    a to chto ia skazal pravda i u nas rabotaet :)

    po povodu podelitsa - NET
    a vot raskazat pgalsta esli zahochetsa.


    PS. interesuushie na mail s.zubakov@creatstudio.com
     
Модераторы: Dark™, Skif

Поделиться этой страницей