"Дюна" - документация

Все указания на замеченные синтаксические, семантические и ошибки другого рода огромная просьба отсылать сюда:
madj0388@uosis.mif.vu.lt

- ### "Дюна", что это такое?

- ### "Дюна" "зависла", не сохраненный документ потерян?

- ### Несколько советов для более комфортной работы с "дюной"

- ### Что это такое - дерево сцены (scenegraph), значения полей (fieldvalues), маршруты (routes) и т.п.?

- ### 5 областей "дюны"

- ### Навигация

- ### Редактирование дерева сцены (graphscene)

- ### Создание/удаление маршрутов (ROUTE)

- ### Редактирование значений полей (FieldValues)

  - #### С помощью клавиатуры

  - #### С помощью мышки

  - #### Редактирование полей (FieldValues) в области 3D просмотра

  - #### 6D управление (начиная с версии 0.19beta)

  - #### Локальное 6D управление (начиная с версии 0.19beta)

  - #### Управление с помощью Linux джойстика (начиная с версии 0.20beta)

  - #### Управление с помощью M$Windows джойстика (начиная с версии 0.22beta)

  - #### Редактирование полей (FieldValues) в области просмотра каналов (ChannelView window)

  - #### Цветовой круг (Color Circle) (начиная с версии Version 0.19beta)

  - #### Редактор скриптов (Script Editor) (начиная с версии Version 0.22beta)

  - #### Редактор URL адресов (URL Editor) (начиная с версии Version 0.22beta)

- ### Упрощенное конструирование скриптов (Simplified Scriptbuilding) (начиная с версии Version 0.22beta)

## "Дюна", что это такое?

"Дюна" (dune) это VRML редактор, а также утилита для создания анимации, поддерживающая стандарт VRML97. На данный момент все еще в активной разработке. "Дюна" может использоваться для чтения файлов формата VRML97, воспроизведения и редактирования дерева сцены, полей и маршрутов. Таким образом, "дюна" позволяет создавать несложную анимацию и интерактивные приложения в стандарте VRML97. Надо отметить, что "дюна" не предназначена для создания сложных VRML97 трехмерных моделей. В отличие от большинства 3D редакторов, при освещении и раскрашивании используется стандарт VRML97, таким образом позволяя осуществить пост-редактирование VRML97 файлов, созданных в других редакторах.

### "Дюна" "зависла", не сохраненный документ потерян?

"Дюна" в данный момент все еще находится в стадии активной разработки, поэтому стабильность далека от идеальной.
Если "дюна" "зависла", означает ли это, что мой документ безвозвратно потерян?
Совсем не обязательно
"Дюна" попытается сохранить ваш документ перед выходом. Если сохранение удалось, будет выведено (в Unix/Linux версии) что-то похожее на:

      Internal Crash !
      Try to save Files
      attempt to write file to /home/someone/.dune_crash_NUMBER_NUMBER.wrl
      write successfull

в стандартный error поток системной консоли и окна из которогo стартовала "дюна".
В M$Windows версии будет выведено информационное окно (Messagebox):
После того как вы перезапустите "дюну", в меню "File" будет находится пункт .dune_crash.
Щелкните по нему и сохраните документ под другим именем.

### Несколько советов для более комфортной работы с "дюной"

- "Дюна" не предназначена для моделирования сцен (на данный момент).
  Пока поддерживаются такие узлы (shapenodes) как куб, сфера, конус, цилиндр, текст (хотя реализация текста оставляет желать лучшего), а также "ElevationGrid".
  Другие узлы, как например IndexedFaceSet (фигура состоящая из множества полигонов), IndexedLineSet и PointSet требуют большого количества переменных, по этой причине они еще не поддерживаются.
  Оставшийся узел nurbsPlane не является частью стандарта VRML97. Он будет включен в стандарт VRML200x.
  В настоящее время nurbsPlane можно просмотреть такими VRML97 броузерами как cc3d и contact.
  Поддержка nurbsPlane (очень несовершенная) присутсвует в VRML97 броузере cosmoplayer 2.1 (VRML PROTO). Дополнительную информацию можно найти здесь.
  Для работы с VRML моделью "IndexedFaceSet" лучше всего использовать результат работы какого нибудь редактора 3D моделей (wings3d, aoi moonlight3D, blender, ppmodeller, ppe, ac3d, maya, catia etc.) с соответствующим конвертером (если это требуется), или найти уже готовую модель на просторах сети.
- Для интерактивного тестирования работы и скриптов вашего документа надо использовать пункт меню File -> Preview (или сохранить документ и использовать VRML броузер для просмотра). В "дюне", на данный момент, отсутствует возможность тестировать VRML документы подобным образом.

Несколько стандартных VRML примеров можно найти (для просмотра и редактирования может использоваться "дюна") здесь.

### Что это такое - дерево сцены (scenegraph), значения полей (fieldvalues), маршруты (routes) и т.п.?

"Дюна" это низкоуровневая утилита для создания/редакторования документов в стандарте VRML97. Предполагается, что пользователь имеет представление о базовой структуре стандарта VRML97.
Получить информацию о VRML97, в том числе можно используя официальную ISO спецификацию: http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1. Информация об узлах, особенно важная при использовании "дюны": http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1/part1/nodesRef.html .

### 5 областей "дюны"

Кроме вспомогательных кнопок на панели (toolbar) и сообщений рабочая среда также включает 5 областей. Все области, кроме области 3D просмотра, могут быть активированы/деактивированы. Для этого используется пункт меню "View".

- Область просмотра дерева сцены (SceneTree)
  Эта область содержит всю древовидную структуру используемых узлов. Таким образом показана вся структура VRML файла, а также взаимное расположение узлов.
- Область просмотра значений полей (FiledView)
  Область содержит названия полей и их значения. Показаны значения текущего узла.
- Область просмотра маршрутов (RouteView)
  В этой области содержатся маршруты.
- Область просмотра каналов (ChannelView)
  Эта область имеет значение только когда текушим узлом является интерполятор. Интерполяторы имеют важное значение при создании анимации в VRML97.
- Область 3D просмотра (3D Preview)
  Данная область не может быть деактивирована, т.к. в ней графически отображается структура VRML файла. В отличие от других областей имплементация стандарта VRML97 в данной области является в большой степени незаконченной.
  Некоторые узлы, такие как "Extrusion", "PointSet", "Inline", "Background", определяемый "PROTO", "EXTERNPROTO" просто не отображаются. Другие узлы, такие например как "Text" под Linux, требуют дальнешей доработки.
  К тому же, не все значения полей используются корректно. Более всего бросается в глаза ошибка при отображении полей "ColorPerVertex" и "NormalPerVertex" в узле "IndexedFaceSet" (фигура состояшая из нескольких полигонов).
  Пример корректного и некорректного отображения IndexedFaceSet с полем "ColorPerVertex false" в Cosmoworlds/Cosmoplayer (слева) и "дюне" (справа)
  Более корректное отображение IndexedFaceSet с полем "ColorPerVertexflag true" в "Cosmoworlds/Cosmoplayer" (слева) и "дюне" (справа)
  Очень похожая проблема возникает при использовании поля "NormalPerVertex". Использование некоторым образом сказывается на освещении.
  И конечно-же, такое некорректное отображение обьекта в области 3D просмотра не означает, что это ошибка в вашем VRML документе..
  Если вы сомневаетесь, то всегда можете использовать пункт меню File->Preview для просмотра своего документа в VRML броузере.

### Навигация

Для навигации в области 3D просмотра используются следующие комбинации клавиатура/мышь:

- Shift-Mouse 1: Удаление/приближение сцены
- ctrl-Mouse 1: Вращение сцены

Начиная с версии 0.16 может использоватся навигация в стиле SGI. К слову, не должным образом сконфигурированый менеджер окон (windowmanager) может перехватывать описанные ниже комбинации и вызывать свои, встроенные функции.

- Alt-Mouse1: Вращение сцены
- Alt-Mouse2: Сдвиг сцены
- Alt-Mouse1-Mouse2: Удаление/приближение сцены

Управление сценой возможно и с помощью одной только мыши. Для этого необходимо перейти в режим навигации, щелкнув мышкой по иконке (доступно с версии 0.19beta). В случае, когда активно устройство ввода 6D (?), а также в дереве сцены выбрана иконка сцены , появляется возможность управлять сценой в зависимости от выбранных в VRML документе иконок трансформаций .

### Редактирование дерева сцены (graphscene)

Простейший способ изменения дерева сцены - добавить новый узел, щелкнув на соответствующей иконке.
Если вам понадобилось быстро получить более подробную информацию об иконке, то следует после наведения курсора мышки чуть подождать для получения в строке состояния (status bar) нужного текста.
"Дюна" попытается включить новый узел в позицию текущего выбора в дереве сцены,
или в корневой узел дерева сцены (иконка "Scene").
"Дюна" обозначит серым цветом те узловые иконки, которые невозможно добавить.
Настоящая таблица отображает требования для этих узлов (стандарт VRML97):

- Appearance требует Shape
- Material требует Appearance
- ImageTexture требует Appearance
- MovieTexture требует Appearance
- PixelTexture требует Appearance
- TextureTransform требует Appearance
- Coordinate требует IndexedFaceSet или IndexedLineSet, или PointSet
- Color требует IndexedFaceSet или IndexedLineSet, или PointSet
- Normal требует IndexedFaceSet
- TextureCoordinate требует IndexedFaceSet
- FontStyle требует Text
- AudioClip требует Sound

К примеру, чтобы добавить узел ImageTexture необходимо выбрать в окне дерева сцены узел Appearence. А для добавления узла Appearence нужно выбрать узел Shape.
Все перечисленные поля имеют тип SFNode, поэтому только один аналогичный узел может быть добавлен одновременно. Плюс, соответствующая иконка становится серого цвета если уже существует аналогичный узел. К примеру, нельзя добавить сразу два узла ImageTexture в узел Appearence. Таким образом иконка ImageTexture становится серого цвета, если выбран узел Appearence и узел ImageTexture уже присутствует.

Альтернативный способ редактирования дерева сцены - просто перемещать узлы с помощью мышки.
Если такое перемещение невозможно, то "дюна" предупредит об этом, показывая вместо стандартного курсора знак "стоп"
В противном случае будет отображатся обычный курсор.
Используя клавиатуру можно некоторым образом изменить результат перемещения (подразумевается что пользователь держит кнопку мышки нажатой при перемещении):

- Простое перемешение:
  не нажата никакая кнопка или нажата кнопка Shift (иконка не изменилась)
- Копирование:
  Нажата кнопка Crtl (к изображению иконки добавляется знак "+")
- DEF/USE:
  Одновременно нажаты кнопки Crtl и Shift (к изображению иконки добавляется знак "стрелка вверх")

### Создание/удаление маршрутов (ROUTE)

Маршруты создаются в "дюне" следующим образом: в области RouteView отыскивается нужная иконка (иконка подсвечивается одновременно с соответствующим узлом в дереве сцены) и пользователь проводит линию от нужного события (eoent) к другой иконке. Сами события отображаются в виде небольших квадратиков распологающихся с левой и правой сторон иконки. Имена событий, а также соответствующий событию цвет отображаются при наведении курсора.
Соединены могут быть события только одного и того же типа (цвета), как того требует стандарт VRML.
Чтобы удалить маршрут необходимо перечеркнуть его с помощью мышки.

### Редактирование значений полей (FieldValues)

"Дюна" предоставляет более чем один способ изменить значения полей в узлах:

- С помощью клавиатуры
  Щелкнув мышкой по требуемому полю. После чего в открывшемся текстовом поле ввести требуемое значение.
- С помощью мышки
  Нажав на нужном поле и удерживая кнопку мышки нажатой двигать манипулятор влево/вправо. Таким образом уменьшая/увеличивая значение поля.
  Изменение полей на данный момент не срабатывает с полями типа "MF fields" (multiple Fields). То есть с полями которые содержат другие поля и раскрываются при нажатии на знак "+".
- Редактирование полей (FieldValues) в области 3D просмотра
  Изменения в области 3D просмотра также изменяют значения полей соответствующих узлов (что очевидно, прим. пер.). Главным образом изменяются transform узлы.
  Во время интерактивной работы с помощью мышки в области 3D просмотра иконки позволяют выбрать между
  - смещением
  - вращением
  - масштабированием
  - смещением центра (начиная с версии 0.19beta)
  Учтите, что использование этих возможностей возможно, если в дереве сцены присутствует узел transform .
  В окне 3D просмотра кроме узла transform возможно также изменение и других полей. Это достигается захватом и перемещением маленьких белых квадратиков, которые присутствуют при отображении узлов типа ElevationGrid, PointLight, Box или VRML200x Nurbsurface.
- 6D управление (начиная с версии 0.19beta)
  Начиная с версии 0.19beta "дюна" поддерживает устройства ввода с шестью степенями свободы (6D inputdevices). Данная возможность реализована в Unix/Linux версиях "дюны".
  При нажатии вы можете перемещать узел Transform (и все входящие в него узлы) по всем шести направлениям. Иконка ограничивает перемещения смещениями, а иконка вращением.
  Классическим 6D устройством ввода является спэйсбол (spaceball), тип джойстика (joystick) позволяющий двигаться понемногу, но во всех возможных направлениях, включая вращение.
  Если, к примеру, нажать на верхнюю часть спэйсбола, то обьект переместится вниз. А при кручении спэйсбола обьект вращается вслед за вашими действиями.
  Сконфигурировать (пока что) 6D устройство ввода можно исключительно через командную строку. Кроме типа устройства, требуется также указать шкалу вводимых значений. К примеру:

         dune -xinput spaceball -allxyz=20,200 -allrot=40,400

  Кроме поддержки устройств используя протокол Xinput, также существует поддержка Linux джойстика и libsball. Для более детального ознакомлениe с параметрами командной строки можно обратится к man странице.
  Другим 6D устройством ввода является пульт (dials), который доступен пользователям SGI IRIX. Настройки по умолчанию не позволяют работать комфортно с этим устройством.
  Используя командную строку

         dune -xinput dialbox-1 -x=0 -y=2 -z=4 -xrot=1 -yrot=3 -zrot=5 -all=100,100,wheel

  можно поменять оси вращения местами.
- Локальное 6D управление: Do you know RC planes ? (new in version 0.19beta)
  При нажатии на иконку включается режим локального 6D перемещения, таким образом можно использовать локальные оси узла transform.
  К примеру, если перемещать спейсбол по оси z ("в глубь экрана") узел transform (и все входящие узлы) будет перемещатся в направлении своей локальной оси z (следовать в направлении синей z - стрелки). Или, к примеру, если перемещать спейсбол по оси y ("вверх") узел transform (и все входящие узлы) будет перемещатся в направлении своей локальной оси y (следовать в направлении зеленой y - стрелки).
  Это имеет смысл если направления обьекта и узла transform совпадают. Обычно направление обьекта не совпадает с его узлом transform.
  Поэтому узел transform должен быть помещен в свою очередь в другой узел, а узел transform объекта должен быть повернут соответствующим образом.
  При использовании управления данного типа вы сможете увидеть эффект, который тем не менее не является чем то новым для пользователей RC planes: Если объект движется "по направлению к вам", вращение спейсбола влево приведет к вращению объекта вправо.
  Похожие трансформации происходят в режиме ракеты. В режиме ракеты перемещения разрешены только по локальной оси z. Это удобно, когда необходимо перемещать объект по какому-либо пути одновреммено вращая его.
  Дугой похожий тип трансформаций обеспечивает режим полета . В режиме полета, вращение объекта возможно только вокруг локальной оси y. Это удобно в случае, если вам необходимо двигать объект в плоскости.
  Оставшиеся режимы трансформаций работающие в локальном режиме (все изменения происходят в направлениях локальных осей) включают режим масштабирования и режим смещения центра .
- Управление с помощью Linux джойстика
  К сожалению, 6D устройства ввода не очень-то распространены. Поэтому Linux версия "дюны" поддерживает джойстики.
  Вообще-то, существет множество различных устройств (включая спэйсбол) под Linux, которые могут играть роль джойстика. Однако необходимо различать между 6D (к примеру Labtec Spaceball), 4D (к примеру геймпад (gamepads) с двумя ручками), 3D (джойстик с вращаемой ручкой, например Micro$oft Sidewinder Pro) устройствами ввода и обычным джойстиком.
  - 6D джойстики (например Labtec Spaceball) могут быть использованы как и другие 6D устройства ввода.
  - 4D джойстики (к примеру геймпад с двумя ручками) не позволяют использовать режимы 6D и 6D Local. Кроме смещений , вращения , масштабирования и смещения центра они поддерживают режимы полета (hover) и ракеты (rocket) .
    В зависимости от режима, за вращение и смещения ответственны соответсвующие оси.
  - В случае использования 3D джойстикa (с вращаемой рукояткой) все немного сложнее. В конфигурации по умолчанию ввод посредством оси 3. (вращение рукоятки) провоцирует движение назначенное оси z.
  - В случае использования 2D джойстикa мы не имеем достаточно осей для ввода данных в трех измерениях. Поэтому необходимо переключатся между интерпретацией оси 2. как z-оси (удаление/приближение ) или как y-оси (вверх/вниз ) посредством иконок.
    При вращении режим "удаление/приближение" интерпретируется как вращение вокруг оси y, а режим "вверх/вниз" (oben-unten) интерпретируется как вращение вокруг оси z.
  - Для режима "ракета" требуется 4 оси. При использовании 3D джойстика в этом режиме используется информация вращения режимов "удаление/приближение" и "вверх/вниз" .
    Режим "ракета" не поддерживается при использовании 2D джойстика.
  Иногда, использование некоторых осей джойстика попросту не имеет смысла (например дополнительный контролер в Micro$oft Sidewinder Pro).
  В таком случае количество осей может быть ограничено. Чтобы, например, в джойстике Micro$oft Sidewinder Pro задействовать 3 оси, необходимо указать опцию -axis в командной строке:

         dune -joystick /dev/input/js0 -axes=3

  Геймпады (gamepad) очень часто имеют множество ненужных осей. Например геймпад Logitech Wingman Cordless возвращает количество осей равное 9 при использовании утилиты "jstest". Чтобы использовать только 6 осей (2 рукоятки и "крестики") необходимо переназначить оси, указав соответствующие опции в командной строке:

         dune -joystick /dev/input/js0 -y=4 -z=-1 -xrot=6 -yrot=3 -zrot=5

  Опция "-z=-1" интерпретируется следующим образом: ось z будет назначена оси номер 1 (ось 2., счет начинается с 0), но при этом инвертируется направление.
- Управление с помощью M$Windows джойстика:
  Поддержка M$Windows джойстика почти во всех отношениях подобна поддержке Linux джойстика.
  Стиль Windows драйверов для подобных джойстиков определяет такие особенности работы как, например, нерабочая рукоятка 2. или определение осей, но такие оси при работе возвращают только ошибочные значения.
  Кроме этого, "мудрость" авторов API M$Windows джойстика определила тот факт, что ошибочное значение возвращаемое осью интерпретируется как полный поворот (похожая проблема привела к взрыву первой ракеты "Ariane 5"...).
  Поэтому рекомендуется начать тестирование джойстика под M$Windows всего лишь с двумя осями. Для первого M$Windows джойстика (номер 0) командная строка может выглядеть следующим образом:

         white_dune.exe -joystick 0 -axes=2 -none=2 -allxyz=20,,,0.000001 -allrot=0.2,,,0.0000001

- Редактирование полей (FieldValues) в области просмотра каналов (ChannelView window)
  Область просмотра каналов изпользуется для просмотра и редактирования интерполяционных узлов (interpolator nodes). В интерполяционном узле входные значения (в диапазоне от 0 до 1) назначаются выходным значениям.
  Интерполяторы используются в VRML для создания простейшей анимации в форме:

         ROUTE TimeSensorDEFNAME.fraction_changed TO ???InterpolatorDEFNAME.set_fraction
         ROUTE ???InterpolatorDEFNAME.value_changed TO ???DEFNAME.set_???

  Значение поля вывода "fraction_changed" узла "TimeSensor" направляется в поле ввода "set_fraction" интерполяционного узла. Интерполяционный узел выбирает соответствующее подходящее значение между выходными числами. Результат может быть направлен другому VRML узлу, что приведет к плавной анимации.
  В следуюшем примере:
  вывод "PositionInterpolator" со входными значениями 0, 0.3, 1 и выходными значениями x=1/y=0/z=3, x=1/y=2/z=3, x=3/y=3/z=0 направляется в поле "set_translation" узла transform. Таким образом узел transform (и содержащийся в нем обьект) в промежутке времени от 0 до 0.3 поменяет свою координату y от y=0 до y=2 (поднимется выше).
  Не все интерполяторы стандарта VRML97 поддерживаются на данный момент. Имплементация требует очень большого количества данных.
  - В области просмотра каналов можно исползовать следующие интерполяторы:
    - ColorInterpolator:
      Цветовая интерполяция.
      Цели для маршрутов (route targets) можно найти в пункте меню Shape->Appearance->Material.
    - PositionInterpolator:
      Интерполяция позиций.
      Целью для маршрута может служить, например, Transform.set_translation.
    - OrientationInterpolator:
      Интерполяция вращений.
      Целью для маршрута может служить, например, Transform.set_rotation.
    - ScalarInterpolator:
      Интерполяция между числами с плавающей точкой.
      Такие числа служат входящими событиями (EventIn) для многих VRML узлов.
      Возможны многочисленные варианты использования.
  - Следующие интерполяторы на данный момент не поддерживаются, так как количество вводимых данных слишком велико:
    - CoordinateInterpolator:
      Интерполяция между точками в IndexFaceSet.
      Анимация, для которой используется CoordinateInterpolator называется "морфинг" ("morphing").
    - NormalInterpolator:
      Интерполяция между нормалями (Normales) в IndexFaceSet.

В области 3D просмотра также возможно создавать некоторые типы анимаций. Анимация основанная на PositionInterpolator/Transform.set_translation и OrientationInterpolator/Transform.set_rotation может быть создана с помощью 6D манипулятора.
Если вы хотите работать с записывающим устройством (VCR recorder), для записи и проигрывания анимаций, то следующие условия должны быть выполнены:

- Маршруты должны быть в форме:

         ROUTE TimeSensor.fraction_changed TO ???Interpolator.set_fraction
         ROUTE ???Interpolator.value_changed TO ???.set_???

- В Timesensor-Knoten значение поля "loop" должно иметь значение "TRUE". (анимация будет стартовать снова и снова).
- Значение поля "starttime" узла Timesensor должно быть больше или равно значению поля "stoptime" Timesensor-Knoten.

При нажатии на кнопку записи , необходимо изменить временной курсор и ввести новое значение (посредством клавиатуры, мышки или 6D манипулятора).
При нажатии на кнопку записи совместно с кнопкой проигрывания , вводимые значения (посредством ввода мышкой или 6D манипулятора) записываются непрерывно.
Запись посредством ввода мышкой требует некоторой деликатности. В этом случае вероятность стереть записанные значения велика.
Вам необходимо выбрать временной интервал в области просмотра полей (щелкая и перетягивая мышкой), и потом использовать либо пункт меню: edit -> delete либо иконку удаления.
Совпадающие значения будут удалены.
- Цветовой круг (Color Circle) (начиная с версии 0.19beta)
  Для выбора цвета в дюне существует специальное окно которое вызывается в области просмотра полей. Для вызова окна необходимо щелкнуть мышкой по полю выбора цвета (при этом иконка цветового круга должна быть нажата).
  Щелкнув мышкой вы можете выбрать необходимый цвет в цветовом круге,а в находящейся рядом колонке более темный оттенок выбранного цвета.
  На сегодня, в ос Unix/Linux при использовании экранных режимов отличных от true/directcolor, цветовой круг отображается с задержками.
  При нажатии на кнопку "OK" восстанавливается нормальный режим работы области просмотра полей.
- Редактор скриптов (Script Editor) (начиная с версии 0.22beta)
  Существует два способа запуска редактора скриптов:
  - Создав новый скрипт-узел (scriptnode):
    Используя иконку "Script" (пункт меню Create -> Programming -> Script),
  - Или редактируя существующий скрипт-узел.
    Если выбран скрипт-узел, используя иконку "Object Edit" (пункт меню Action -> Object edit),
  Диалоговое окно редактора скрипт-узлов
  позволяет добавлять новые поля/события (add), изменять (change) или удалять их (delete).
  Для окончания работы нажмите на кнопке "OK".
- Редактор URL адресов (URL Editor) (начиная с версии 0.22beta)
  "url" поле (поле может содержать код ECMAscript (javascript)) скрипт-узла) может быть отредактировано в обычном текстовом редакторе.
  Текстовый редактор выбирается посредством пункта меню options -> Texteditor Settings
  Когда поле "url" пусто, будет создана схема (шаблон) скриптов ECMAscript. Выберите "Script Node" и используйте иконку "URL Edit" (пункт меню Action -> Url edit).

### Упрощенное конструирование скриптов (Simplified Scriptbuilding) (начиная с версии 0.22beta)

Перед началом использования редактора скриптов, вам необходимо заранее спланировать использование типов данных и входящих/выходящих (eventIn/eventOut) событий в соединяемых узлах. Для этого необходимо, прежде всего, прочесть необходимую документацию по узлам - VRML standard (также вы можете использовать пункт меню Help -> имя текущего узла или воспользоваться имеющейся у вас литературой).
Вы можете найти более удобным способ быстрого конструирования скриптов.
Создайте новый скрипт-узел с помощью иконки "Script" (или выбрав пункт меню Create -> Programming -> Script).
Следуя философии "посторонись!" применявшейся в первоначальной версии "Дюны", попросту щелкните на кнопке "ОК" в диалоговом меню.
Теперь вы можете использовать область просмотра маршрутов для дальнейшей работы.
Скрипт-узлы обладают специальным выходным событием (eventOut) которое возможно подключить к любому другому событию ("connect anything"). Для подключения щелкните по нему мышкой и начните тянуть - появится белая линия графически отображающая маршрут.
Удерживая кнопку мышки нажатой и продолжая тянуть вы сможете подключить этот маршрут к входным событиям (eventIns) других узлов,
а цвет маршрута будет изменяться в зависимости от типа данных входного события.
Отпустив кнопку мышки вы зафиксируете маршрут.
Аналагично вы можете использовать специальное входное событие (eventIn) к которому можно подключить любое другое событие ("connect anything"),
и соединить его с выходным событием другого узла.
Теперь необходимо отредактировать узловое поле "url". Это можно сделать посредством urledit, а также выбрав скрипт-узел в области просмотра сцены, и далее поле "url" в области просмотра значений полей.
Следующим шагом следует щелкнуть на иконке "Object Edit" (или выбрать пункт меню Action -> Object edit).
"Дюна" должна вызвать соответствующий текстовый редактор - например в UNIX системе (что также относится к Linux системам) по умолчанию вызывается популярный редактор vi (в настройках "дюны" прописана команда "xterm -e vi"). В случае MacOSX версии вызывается "xedit", а в M$Windows версии используется команда "edit" когда переменная окружения $WINEDITOR не установлена. Вы можете изменить вызываемый редактор используя пункт меню Options -> Texteditor Settings ...
В открывшемся окне редактора вы увидете начальный код (шаблон) javascript.
Воспользовавшись пунктом меню Options -> ECMAscript settings вы можете установить, нужны ли вам более полные комментарии в сгенерированном шаблоне.
Закончите необходимый вам код, сохраните его и закройте редактор (в случае использования vi это команда :wq).

to be continued about NURBS Modelling in english language