By November 9, 2015 10 Comments

Houdini VEX Editor v1.0.5 released

Вышел в свет мой новый инструмент для Houdini. На этот раз это редактор VEX кода! Он должен стать хорошей заменой стандартным редакторам Houdini. Во время разработки делался упор на самые громкие пожелания пользователей. Да-да, теперь можно изменить размер шрифта! Но это лишь одна из возможностей.

Ниже вы можете прочитать полный список всего что умеет VEX Editor в своей стартовой комплектации. Конечно же я открыт для новых идей расширения функционала. Любые предложения и сообщения об ошибках присылайте мне на почту paulwinex@gmail.com.
 

  

 

Что умеет VEX Editor

  •  редактирование VEX кода из параметра любой ноды
  • редактирование кода секции  VEX оператора
  • редактирование *.h файлов
  • связь редактора и источника, быстрое сохранение кода по Ctrl+Enter
  • авто создание параметров, используемых в коде в момент сохранения
  • удаление неиспользуемых и переименованных параметров
  • авто изменение типа параметра при сохранении
  • подсветка VEX синтаксиса
  • быстрое изменение размера шрифта (Ctrl + Mouse Scroll)
  • цветовые темы под все 3 стандартные темы Houdini. А так же редактор своих тем
  • быстрая справка по функциям с помощью клавиш Shift+F1
  • автокомплиты для VEX функций, типов данных, ключевых слов. Список функций генерируется автоматически для текущего билда Houdini
  • автокомплиты функций и переменных из текущего кода, а так же из подключенных файлов через include
  • контекстные автокомплиты
    • существующие параметры ноды для функции ch, chv, chi и т.д.
    • стандартные атрибуты, включается после символов @
    • существующие атрибуты на текущей геометрии SOP контекста (для нод Wrangle)
    • глобальные переменные*, включается после символа
    • входящие и исходящие параметры ноды inline, включается после символа $ в ноде inline
    • директивы и их параметры, включается после символа #
    • подключаемые файла из пути HOUDINI_VEX_PATH, включается после ввода “#include” и открытия кавычки , или <
  • темплейты, а так же быстрая вставка темплейтов по кнопке Tab после ключевого слова
  • регулярный бекап на случай падения Houdini
  • сохранение открытых вкладок в hip файле и их автоматическое восстановление при открытии
  • отображение сообщение об ошибках в интерфейсе редактора
  • авто отступы и управление отступами клавишами Tab и Shift+Tab
*Внимание!

НЕ рекомендуется использовать глобальные переменные в VEX коде.

It’s possible to read and write global variables directly (for example,
P and Cd in the SOP context). However, we strongly recommend you don’t use
global variables directly. Houdini does not guarantee the order in which
VOPs generate their code, so assigning values to globals can give unpredictable
results. Instead, you should explicitly wire from the globals node into this node.
Unlike the Point SOP, this does not use local variables. Further, all backtick expressions
and $F variables will be evaluated at frame 1, not the current time. Use Frame, Time, or TimeInc instead.

Описание интерфейса

interface

Кнопки основной панели

btn1 Быстрое подключение ноды. Эта кнопка ищет атрибуты snippet и code, либо секцию VflCode. Если найден один из пунктов, сразу открывает окно редактора с привязкой на найденный параметр. Так же может работать как быстрый переход ко вкладке с параметром выделенной ноды.
btn2 Выбор параметра из списка
btn3 Открытие файла *.h
btn4 Создание пустой вкладки с возможностью привязки её к параметру или сохранение в файл
btn5 Сохранение кода на привязанный параметр или в файл. То же самое что и клавиши Ctrl+Enter
btn6 Перезагрузка исходного кода из привязанного параметра или файла в текущей вкладке
btn7 Выделяет ноду, привязанную к текущей вкладке (если вкладка привязана к параметру ноды)
btn8 Открывает папку с файлом (если вкладка привязана к файлу)

Меню

Tabs:

  • Create From Selected Node
    Создание вкладки из выделенной ноды
  • Create From File
    Создание вкладки из файла
  • Create Empty Tab
    Создание пустой вкладки
  • Save Current Code
    Сохранение кода текущей вкладки на привязанный параметр или в файл
  • Reload Current Tab From Sourse
    Перезагрузка исходного кода из привязанного параметра или файла в текущий редактор
  • Load Tabs From Current HIP
    Загрузка сохраненных вкладок из текущего hip файла. Например, если вы открыли другой файл не перезагружая VEX Editor
  • Clear Saved Tabs
    Удаление сохраненных вкладок из текущего hip файла
  • Backups
    Автосохранения

Editor:

  • Theme
    Выбор цветовой темы редактора
  • Options
    Диалог настроек

Templates:

  • Templates Editor
    Редактор темплейтов
  • Далее идет список имеющихся темплейтов

Help:

  • Manual
    Переход на данную страницу
  • VEX Documentation
    Страница документации по VEX на официальном сайте
  • Show help for selected method
    Контекстная справка для функции, на которой находится курсор. Так же вызывается по нажатию Shift+F1
  • Check New Version
    Проверка новой версии VEX Editor
  • About
    Окно About

Окно настроек

  • Default Font Size
    Размер шрифта для новых вкладок
  • Font Family
    Выбор семейства шрифта
  • Auto Update Spare Patameters On Save
    Автоматически создавать параметры, используемые в коде при сохранении (только для Wrangle)
  • Create Spare Parameters on Top
    Создавать параметры вверху интерфейса ноды (только для Wrangle)
  • Auto Save Tabs In HIP
    Сохранять открытые вкладки в hip файле
  • Create backup
    Создавать автосохранения. По умолчанию сохраняются все вкладки каждые 3 минуты. Настраивается в файле settings.json
  • Show Whitespaces
    Отображать непечатаемые символы в редакторе
  • Use Online Manual
    Использовать онлайн документацию для быстрой справки вместо локальной
  • Use External Browser For Quick Help
    Использовать внешний браузер для быстрой справки вместо стандартного Houdini браузера

Редактор темплейтов

  • Add New
    Создать новый темплейт
  • Removе
    Удалить выделенный темплейт
  • Keyword
    Ключевое слово для выделенного темплейта. Темплейт будет вставлен в текущее положение курсора после ключевого слова и нажатия кнопки Tab
  • $cursor$
    Кнопка для вставки маркера, обозначающего позицию курсора после вставки темплейта. По умолчанию курсор становится в конце.
  • Save
    Сохранить все изменения и создать файлы для новых темплейтов
  • Cancel
    Выйти без сохранения
  • Open Folder
    Открыть папку с темплейтами

Горячие клавиши

В редакторе

  • Ctrl + Enter — сохранить текущий код
  • Shift + F1 — открыть справку о функции, на которой в данный момент находится курсор
  • Tab — добавить отступ от текущей позиции или для выделенного кода
  • Tab — после ключевого слова темплейта добавляется весь темплейт
  • Shift + Tab — убрать отступ текущей строки или выделенного кода
  • Alt+Q — закомментировать или разкомментировать текущую строку или выделенные строки
  • Ctrl + D — дублирование строки или выделенного кода
  • Ctrl + Z — отмена
  • Ctrl + Y — повтор
  • Ctrl + C — копировать
  • Ctrl + X — вырезать
  • Ctrl + V — вставить
  • Ctrl + Mouse Scroll — изменить размер шрифта текущей вкладки
  • Alt + Mouse Scroll — скрол редактора влево \ вправо

При открытом виджете автокомплита

  • Arrow Up / Arrow Down — перевести фокус на комплитер, выбрать строку
  • Enter — применить текущую строку комплитера. По умолчанию первая
  • Esc — закрыть комплитер если он не в фокусе
  • Любая другая клавиша — вернуться в редактор и продолжить набор текста

 

Установка

Прежде всего скачайте пакет pw_VEX_Editor и распакуйте его по пути PATH, PYTHONPATH или стандартные директории Houdini для Python скриптов. Например $HFS/Houdini/scripts/python
Далее нужно лишь подгрузить скрипт как PythonPanel. Так же обязательно потребуется модуль hqt. Скачайте последнюю версию!

Houdini 13

Если вы используете версию 13 то у вас нет возможности открыть редактор как PythonPanel. Тут вам может попробовать помочь модуль hqt. Сам я на данной версии Houdini совершенно не тестировал. Читайте документацию, пробуйте запускать.

Houdini 14

Так как VEX Editor это обычная PythonPanel то вы можете настроить его открытие самостоятельно. Либо использовать готовый файл python_panels/vexeditor.pypanel. Кроме того, в 14й версии Houdini вы можете использовать модуль hqt для быстрого создания и открытия PythonPanel. О том как это сделать читайте в документации к модулю hqt.

Houdini 15

В Houdini версии 15 реализовали отличную возможность добавлять конкретную PythonPanel как новую панель Houdini. Поэтому вы можете просто добавить прилагаемый скрипт python_panels/vexeditor.pypanel в папку python_panels вашего HOUDINI_PATH и включить VEX Editor в список панелей. При этом модуль hqt всё равно требуется.

screen1

 Linux

Установка ничем не отличается. Были проведены тесты на Ubuntu, Kubuntu и Debian.

Использование

Чтобы начать писать код в VEX Editor достаточно сделать три простых действия:

  1. Открыть VEX Editor в новой вкладке (смотрите инструкцию по установке)
  2. Выделить ноду wrangle, inline, snippet или VEX оператор
  3. Нажать кнопку btn1 для быстрого создания вкладки. Нужный параметр будет найден автоматически.

Всё готово чтобы редактировать код! Cохранить результат можно в любой момент с помощью с помощью горячих клавиш Ctrl+Enter или кнопки на панели.

Известные проблемы

Основные проблемы связаны с имплементацией Qt в конкретной системе. Ввиду подобных проблем на MacOS некоторые элементы интерфейса отображаются не корректно. Их победить пока не удается. Поэтому за работоспособность скрипта на Mac не могу ручаться. В будущем попробую исправить.

Houdini 15 на данный момент вышел совсем недавно и имеет ряд проблем, как с обычными инструментами так и с реализацией Qt. Это в частности стало причиной ошибок в  работе модуля hqt и заменой виджета автокомплита на стандартный список. Всё это будет исправляться по мере стабилизации самого Houdini.

Для создания параметров на ноде кастомного оператора вам необходимо указать входящие аргументы основной функции. Например так:

sop myoperator(int value){
...
}

Как только вы добавите новые аргументы и нажмете Apply в окне Type Properties, Houdini пересоздаст параметры вашего оператора. К сожалению того же самого не происходит если заменить код оператора программно, и в текущей реализации HOM или в HScript мной пока не найдена возможность сделать это так же программно. Данный вопрос пока в разработке.
Решение проблемы – открыть окно Type Properties и нажать Accept.


 

Очень надеюсь что Вам пригодится данный инструмент в вашей работе.  Идеи для новых фишек и сообщения об ошибках как обычно присылайте на paulwinex@gmail.com.

Posted in: Houdini, PyQt, Python Tools

10 Comments on "Houdini VEX Editor v1.0.5 released"

Trackback | Comments RSS Feed

  1. Эдуард says:

    Афигенная вещь !!!
    Грандиозный вклад в работу с VEXом, Павел !

    Вот только у меня проблема с хелпом функций. Ставлю курсор на функцию, жму ‘Shift + F1′, и вылезает ошибка ” UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe0 in position 0: ordinal not in range(128) ”

    Как с этим бороться ? Очень нужная вещь – этот хелпер по функциям !

    Зараннее ОГРОМНОЕ СПАСИБО !

    • PaulWinex says:

      Если ошибка пишется в хелпбраузере то это известная проблема Houdini.
      Чинится так:
      1. Открыть файл:

      $HFS\python27\lib\mimetypes.py

      2. Закоментить строчки:

      try:
      ctype = ctype.encode(default_encoding) # omit in 3.x!
      except UnicodeEncodeError:
      pass

      Если же пишет в консоль, то это проблемы моего скрипта, а точней проблема с кодировкой. Случайно кириллицу в вексе не используете? )))

  2. Эдуард says:

    Оперативно ! =)
    Нет, кириллицу конечно же не использую.
    Сейчас попробую делитнуть строчки и отпишусь ))
    Спасибо, Павел )

  3. Эдуард says:

    Всё заработало ! =)
    Радости полные штаны ))
    Павел, ещё раз Вам огромное спасибо !)
    Обалденны редактор написали ! =)

  4. Anonymous says:

    There is an error in the VEX Editor script.

    Traceback (most recent call last):
    File “”, line 1, in
    File “”, line 9, in createInterface
    ImportError: No module named pw_VEX_Editor

    Выдает такую ошибку.
    В python shell hqt импортится без проблем.
    Хэлп срабатывает и выдает все функции.
    Может быть из-за билда?
    houdini15.0.416

    • PaulWinex says:

      Необходимо основную папку скрипта правильно переименовать, она должна называться pw_VEX_Editor и находиться по пути PYTHONPATH или PATH или там где Houdini её увидит (HOUDINI_PATH/scripts/puython). Вероятно Github добавил версию релиза к имени или еще что-то. Попробую в следующем релизе изменить структуру репозитория.

  5. Anonymous says:

    Папку переименовал, путь: D:\houdini15\houdini\scripts\pw_VEX_Editor\python_panels указал . Ошибка все равно.Может я что то не так делаю, просто недавно стал осваивать пакет и немного не понимаю $HIP.

    • PaulWinex says:

      Да, не так. Еще раз посмотри урок по установке.
      1. Ставить надо в \houdini\scripts\python\pw_VEX_Editor
      После чего перезапустить houdini
      2. Папка python_panels в модуле по сути не нужна, там просто хранится то что нужно скопировать по пути:
      houdini15\houdini\python_panels
      3. $HIP, $HFS, $F и другие переменные хорошо расписаны в документации
      http://archive.sidefx.com/docs/houdini14.0/expressions/_globals/

  6. Anonymous says:

    Спасибо большое! Помогло! Просто у меня не было папки “python”, после того когда я ее создал и поместил туда папку со скриптом, все заработало!

  7. Yaroslav Oksuta says:

    Установил Houdini FX 16.0.705
    влазит такая ошибка

    There is an error in the VEX Editor script.

    Traceback (most recent call last):
    File “”, line 1, in
    File “”, line 9, in createInterface
    File “C:/Users/Yaroslav/Documents/houdini16.0/scripts/python\pw_VEX_Editor\__init__.py”, line 1, in
    import editor_panel
    File “C:/Users/Yaroslav/Documents/houdini16.0/scripts/python\pw_VEX_Editor\editor_panel.py”, line 9, in
    import hou, hqt
    File “C:/Users/Yaroslav/Documents/houdini16.0/scripts/python\hqt.py”, line 54, in
    from PySide.QtCore import *
    ImportError: No module named PySide.QtCore

    раньше все работало на 16 гудини

Оставьте комментарий