Эй, коллеги-разработчики!

Я упомянул в видеоблоге, которым поделился на прошлой неделе, что начинаю курс графики в Стэнфорде, и первая неделя закончена! Я вновь открыл для себя любовь к графическому программированию и любовь к школе (без шуток!) и снова взялся за Three.JS с новым желанием изучить все вещи — в частности, безумно странные художественные формы, которые я могу адаптируйтесь к смехотворно странным средам виртуальной реальности с помощью WebVR.

[идентификатор подписи = ”attachment_2931 align =”aligncenter” ширина =”660]

Искусство субъективно[/caption]

Если вы никогда не создавали приложение, не зная, что именно вы создаете, я рекомендую попробовать. Моя первоначальная цель состояла в том, чтобы просто сгенерировать фигуру на основе математической формулы, и я постепенно начал добавлять вещи в свою программу, пока не понял, что строю начало действительно странного веб-сайта для создания графики.

Еще в старшей школе, во время первого урока информатики, который я когда-либо посещал, мы одну четверть года посвятили созданию сцен с помощью графической библиотеки Java. Мне нравилось, что я могу давать компьютеру инструкции для создания графики, и это начало проявляться в моем желании строить для виртуальной реальности. Сейчас это просто куча разноцветных линий, основанных на двух разных уравнениях, но приложение понемногу растет, и я не знаю, куда оно пойдет.

// Generate spiral geometry given segment length 
// & number of segments
var spiral = function(segLength, size)
 {
   var geometry = new THREE.Geometry();
   for(var t = 0; t < parseInt(size); t+= parseFloat(segLength))
   {
     var _x = Math.pow(t, .5) * Math.cos(t);
     var _y = Math.pow(t, .5) * Math.sin(t);
     geometry.vertices.push(new THREE.Vector3(_x, _y, 10));
   }
   return geometry;
 };

Оказывается, Three.JS — довольно солидная библиотека для создания различных фигур с помощью функции «Геометрия». Хотя большое внимание уделяется фотореалистичному рендерингу для виртуальной реальности, меня все больше волнует нереалистичный рендеринг, чтобы убрать физический аспект среды, которую мы можем испытать в виртуальной реальности. В частности, с этим приложением мне также интересно поиграть с соображениями пользовательского опыта для гибридных веб-приложений, то есть приложений, которые легко работают между виртуальной и не виртуальной реальностью, или что-то, что можно легко построить в 2D, а затем просмотреть в виртуальной реальности. В идеале, я думаю, все было бы идеально делать в виртуальной среде, но я думаю, что в наборах инструментов, которые у нас есть, все еще чего-то не хватает.

[идентификатор подписи = ”attachment_2942 align="aligncenter" ширина = ”660]

Полный сайт в его нынешнем виде — верхнее меню служит панелью инструментов для холста внизу. Промежуточным шагом будет визуализация холста в режиме виртуальной реальности с целью включения поддержки панели инструментов в режиме виртуальной реальности.[/caption]

Прямо сейчас я ограничиваю все тем, что можно нарисовать линией. Хотя части сгенерированных изображений кажутся трехмерными, на самом деле это наполовину правда и наполовину иллюзия: ромбовидная форма в центре на самом деле визуализируется с определенными координатами X, Y и Z, но спираль полностью находится в одной Z-плоскости. Самое интересное в использовании формул для определения рисуемых фигур и управления ими означает, что их можно крутить и тыкать, чтобы получить разные результаты, а построение графика в трехмерном пространстве — это просто вопрос изменения дополнительной переменной в формуле.

Я не совсем уверен, к чему это приведет (кроме планирования поддержки VR), но было здорово поиграть с ним, чтобы узнать больше о Three.JS и познакомиться с общим графическим программированием. Код доступен на GitHub, и в какой-то момент я сделаю сам сайт доступным для желающих, возможно, когда он станет немного функциональнее. У меня в рукаве есть несколько идей, которые можно добавить, и я буду обновлять их по мере продвижения.

Удачной разработки!