Использование VPython для создания 3D-анимации

Original: http://www.glowscript.org/docs/VPythonDocs/index.html

VPython упрощает запись программ, которые генерируют навигационные 3D-анимации в реальном времени. Он основан на языке программирования Python, который широко используется во вводных курсах программирования благодаря его чистому дизайну и широко используется в науке и бизнесе.

Классический VPython был создан Дэвидом Шерером в 2000 году. В 2011 году Дэвид Шерер и Брюс Шервуд начали разработку GlowScript, аналогичной среды программирования, но которая работает в браузере. В 2014 году стало возможным использовать RapydScript, язык программирования, очень похожий на Python, для поддержки программ VPython в среде GlowScript.

Вот краткий обзор проекта, и вот журнал событий. Вот открытый источник для этого проекта. Существует также техническая документация о среде GlowScript, в том числе о том, как использовать JavaScript или RapydScript для ваших программ.

Существует также VPython 7, созданный Джоном Коуди в 2014 году и продолжающий развитие Джон Коди, Рут Чабай, Брюс Шервуд, Стив Спиклмайр и Мэтт Крейг. Он использует синтаксис GlowScript VPython, но со стандартным Python, тем самым обеспечивая доступ к стандартным модулям Python. Подробнее см. На сайте vpython.org. Также интересен дискуссия о планах будущей эволюции VPython.

В этой документации описаны как GlowScript VPython, так и VPython 7.

Для быстрого ознакомления см. Следующие видеоролики YouTube, но имейте в виду, что для текущей версии VPython имя модуля «vpython», а не «визуальное», а графический дисплей отображается на вкладке браузера, а не в голые окна. (Для GlowScript VPython вы можете опустить импорт vpython.)

3D-объекты (испанская версия Objetos 3D от Хавьера Карро)

Назначение переменной (испанская версия Назначение переменных Хавьером Карро)

Начало циклов (испанская версия Начиная с циклов Хавьера Карро)

Петли и анимация (испанская версия Bucles y Animación от Хавьера Карро)

Масштабные факторы (испанская версия Factores de Escala от Javier Carro)

Отладка синтаксических ошибок

Список, Часть 1

Список, Часть 2

Существует серия обучающих программ GlowScript VPython Ретта Аллаина в контексте прогнозирования движения в вычислительном режиме на уровне вводного курса физики. Используя инструменты в trinket.io, легко добавить как редактирование, так и исполнение GlowScript VPython на свои собственные веб-страницы, и Allain в своем физическом блоге для журнала Wired показал примеры этого.

Начало работы

Чтобы написать программу VPython, войдите в систему на glowscript.org.

* Вы увидите предложение «Вы вошли как <ваше имя пользователя>, и ваши программы здесь». Нажмите здесь.

* Нажмите «Создать новую программу». (Вы можете щелкнуть вкладку «Публикация» перед созданием своей программы, поскольку программы из вашей частной папки недоступны для других.) Выберите имя для программы, которое не должно содержать пробелов или символов подчеркивания.

* Ниже строки GlowScript 2.6 VPython введите поле (). Нажмите «Запустить эту программу», чтобы запустить вашу программу. Вы увидите белый ящик на черном фоне.

* Используйте правую кнопку (или CTRL-перетащить левую кнопку) мыши, чтобы повернуть камеру, чтобы просмотреть сцену под разными углами.

* Для увеличения и уменьшения используйте две кнопки, или ALT / OPTION-перетаскивание, или колесо прокрутки мыши. Сенсорный экран: проведите пальцем или поверните на два пальца; зажмите / увеличьте масштаб.

Использование текстового редактора

Ниже приведен список сочетаний клавиш для поиска, замены и т. Д. Во время редактирования нажмите Ctrl-1 (Cmd-1 на Mac), чтобы запустить вашу программу в том же окне. Нажмите Ctrl-2 (Cmd-2 на Mac), чтобы запустить вашу программу в отдельном окне, что позволяет просматривать вашу программу и ее выполнение рядом. Если вы измените свою программу, снова нажмите Ctrl-2 на дисплее редактора, чтобы повторно запустить программу с новыми изменениями. GlowScript использует текстовый редактор ACE. Поскольку ACE не работает на мобильных устройствах, там используется более простой редактор.

Особенно полезным ярлыком является Ctrl- / (Cmd- / на Mac). Выберите одну или несколько строк в вашей программе и используйте это нажатие, чтобы переключить, прокомментированы ли эти строки или нет. Кроме того, выберите одну или несколько строк и нажмите Tab для отступов или Shift-Tab до unindent.

Рекомендуется использовать браузер Chrome для разработки программ, поскольку он предоставляет наиболее полезные сообщения об ошибках, хотя программы можно писать и запускать во всех браузерах, в том числе на смартфонах и планшетах. В некоторых случаях программные ошибки видны, только если вы нажмете Shift-Ctrl-J, чтобы отобразить консоль Chrome.

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

При просмотре текста вашей программы нажмите «Поделиться этой программой», чтобы узнать, как разрешить другим пользователям запускать вашу программу. Чтобы люди запускали вашу программу, связав ее, программа должна находиться в общей папке или экспортироваться на ваш собственный веб-сайт. Фактически, код, доступный на странице общего доступа, можно просто вставить в файл и сохранить с расширением «.html», а затем вы можете запустить программу, просто щелкнув файл html.

Описания опций, доступных в левом поле

Введение: Основы Python и VPython.

Руководство: Подробнее о VPython, включая создание анимации

Фотографии трехмерных объектов: Как выглядят объекты

Выберите 3D-объект: Детали цилиндра, коробки и т. Д. Начните с цилиндра для обзора.

Работа с 3D-объектами. Проблемы, которые применяются ко всем 3D-объектам: цвет, материал и т. Д.

Windows, Events и Files: создание / изменение окон; обработка событий мыши / клавиатуры; чтение / запись файлов

Векторные операции: Величина, точка и поперечный продукт, вращение и т. Д.

Диаграммы: Создание графиков данных.

факторный/cовмещенный: Специальные функции, используемые при вычислении вероятности.

Что нового: VPython в GlowScript, плюс история VPython ..

Обязательно изучите множество примеров примеров GlowScript, написанных с использованием JavaScript, RapydScript или VPython. Опция VPython основана на компиляторе RapydScript-NG Python-to-JavaScript. Для большинства программ RapydScript почти такой же, как у Python, но есть различия, которые можно увидеть в документации RapydScript.

ВНИМАНИЕ

Не используйте «wait» или «_» в качестве имени переменной. Все языки GlowScript (VPython, RapydScrpt, JavaScript) используют «wait» или «_» в качестве специального сигнала для процесса компиляции. Этот сигнал вставлен для вас там, где это необходимо.

Для опытных программистов

Для удобства начинающих программистов предоставить все, что необходимо для начала работы, VPython по умолчанию импортирует все функции VPython и включает в себя стандартные математические функции, такие как sqrt. Документация написана так, как будто «из vpython import *» присутствовал. Также предусмотрены часы (), random () и arange ().

Однако вы можете импортировать выборочно, как показано в следующих примерах, которые совместимы с VPython 7. (Чтобы помочь с преобразованием из классического VPython, VPython 6, вы можете ссылаться на «vis» или «visual» вместо «vpython».)

import vpython
import vpython as vp # “vp” is any name of your choice
from vypthon import box, color

Для тех, кто использовал Classic VPython

Несколько классических объектов VPython в настоящее время недоступны в VPython: выпуклые, грани и фреймы. Вершина, треугольник и квадрат объектов представляют собой более мощную альтернативу лицам. Многие приложения фрейма могут обрабатываться вместе с составным объектом.

Один из способов устранения различий – проверить элементы переменной «версия», доступные во всех версиях VPython:

Classic VPython:    version is [‘X.Y’, ‘release’]
GlowScript VPython: version is [‘X.Y’, ‘glowscript’]
VPython 7:          version is [‘X.Y.Z’, ‘jupyter’]
and in VPython 7, the version of the GlowScript
graphics library is given by
GSversion is [‘X.Y’, ‘glowscript’]

Объекты кривой и точек несколько отличаются от классического VPython. Обратите внимание, что теперь список точек в объекте кривой не является массивом numpy, поэтому для изменения всех точек требуется цикл.

Для обработки событий мыши нельзя использовать scene.getevent (), но необходимо использовать функцию scene.bind (), которая доступна во всех версиях VPython, начиная с Classic VPython 6. Также доступны сценарии scene.pause () и scene.waitfor (‘ нажмите ‘) и соответствующие параметры.

В GlowScript VPython невозможно импортировать произвольные модули Python, такие как numpy, и любая программа, использующая numpy, должна быть модифицирована. Тем не менее, на языке JavaScript, на который компилируются программы GlowScript, быстро развиваются циклы, поэтому, если вы используете numpy исключительно для скорости манипуляции с массивами, вы можете легко и быстро заменить цикл вычисления numpy контуром.

Разница между программами RapydScript и VPython в контексте GlowScript заключается в том, что опция VPython имитирует важные элементы синтаксиса и семантики программ Classic VPython, тогда как параметр RapydScript реализует ту же семантику для трехмерных объектов, что и для программ JavaScript. Например, в программе RapydScript объект сферы имеет атрибут размера, но не атрибут радиуса, и как поле, по умолчанию ограничивающий прямоугольник сферы равен 1x1x1. Кроме того, изменение длины оси в программе RapydScript не влияет на размер (кроме стрелки, которая имеет специальный атрибут axis_and_length), но в программе VPython, как и в классическом VPython, изменение длины оси также изменяет длину объекта (первый компонент размера объекта).

GlowScript по умолчанию обрабатывает программы VPython, как если бы они имели следующие инструкции в начале программы (которые вам не нужно включать, они будут игнорироваться):

from __future__ import division, print_function
from vpython import *

GlowScript обрабатывает 3/2 как 1.5, как в Python 3.x, а не 1, как на языке Python 2.x, и оператор печати должен использовать форму печати Python 3.x (‘hello’), а не Python 2. x форма печати ‘hello’.

Многие программы, написанные в Classic VPython 6, будут запускаться в GlowScript VPython или VPython 7 без изменений после запуска через программу конверсии, написанную на Python. Эта программа преобразует (x, y, z) => вектор (x, y, z) и obj.x => obj.pos.x. Эти изменения необходимы, потому что GlowScript не распознает (x, y, z) как вектор, а obj.x как сокращенное для obj.pos.x. Программа также преобразует display => canvas и gdisplay => graph. Программа также конвертирует scene.mouse.getclick () => scene.waitfor (‘click’), который работает в обеих средах.

В GlowScript VPython и VPython 7 вы можете использовать сокращенную «vec» для «vector». Если вы хотите использовать программу GlowScript, содержащую «vec» в среде Classic VPython, просто добавьте инструкцию «vec = vector» в начале программы.

ссылки

Сальваторе ди Дио продемонстрировал в своем эксперименте RapydGlow
(http://salvatore.pythonanywhere.com/RapydGlow)
как он смог использовать компилятор RapydScript Python-to-JavaScript с графикой GlowScript. Это вдохновило на реализацию API VPython (vpython.org) на glowscript.org. Он предоставил файл papercomp.js для перегрузки оператора, основываясь на работе
Jürg Lehni (PaperScript: http://scratchdisk.com/posts/operator-overloading).
Он также собрал поддержку перегрузки операторов и возможность писать синхронный код в файле transform-all.js, основываясь на работе
Bruno Jouhier (Streamline: https://github.com/Sage/streamlinejs), and
Marijn Haverbeke (Acorn.js: https://github.com/marijnh).
Поддержка API VPython в браузере возможна благодаря работе
Alexander Tsepkov (RapydScript: https://github.com/atsepkov/RapydScript) и
Charles Law (browser-based RapydScript: https://github.com/charleslaw/RapydScript_web).

В январе 2017 года оригинальный компилятор RapydScript был заменен на RapydScript-NG от Kovid Goyal, который приближается к обработке истинного синтаксиса Python.

Когда проект GlowScript был запущен в 2011 году Дэвидом Шерером и Брюсом Шервудом,
Scherer реализовал перегрузку операторов и синхронный код с использованием существующих в то время библиотек. В 2015 году стало необходимым перейти на новые библиотеки, поскольку компиляция не удалась в некоторых браузерах; Сальваторе ди Дио оказал решающую помощь в этом обновлении. В январе 2017 года была обновлена система перегрузки оператора.

Документацию VPython выпускали Рут Чабай, Дэвид Шерер и Брюс Шервуд.

Leave a Reply

Your email address will not be published. Required fields are marked *