История этой демки такова: однажды один мой друг сделал для своей игры генератор карт планет и захотел, чтобы созданные таким образом карты показывались в виде вращающейся сферы. Однако, при этом он не хотел использовать 3D-графику, а вместо этого сгенерировал множество кадров с этой самой сферой, повёрнутой на разные углы. Количество используемой памяти было… скажем так, избыточным, ну а скорость генерации кадров (как и качество их исполнения) сильно страдала. Чуть подумав, мне удалось помочь ему оптимизировать этот процесс, но в целом меня не покидало справедливое ощущение того, что это задача для OpenGL, а вовсе не для 2D-графики.
И вот, однажды, когда меня мучила бессонница, я решил попробовать совместить эти два подхода: нарисовать вращающуюся сферу (с натянутой на неё картой планеты) через OpenGL, но при этом оставив её плоской.
И должен сказать, что у меня это получилось. Но обо всём по порядку.
- Математика процесса
- Техническая часть
- Увеличиваем разрешение
- Наклон
- Как сделать кусудамы из бумаги своими руками, простые схемы
- Модульные кусудамы
- Тройной драгоценный камень
- Магнолия чампака
- Голубь
- Фото-рамка
- Чернослив
- Розовый куст
- Пирамида из бумаги своими руками. Схемы и способы изготовления
- Как сделать объемные геометрические фигуры
- Из бумаги
- Из картона
- Развертки куба
- Треугольника
- Прямоугольника
- Цилиндра
- Ромба
- Призмы
- Задание 2 (построение прямоугольного треугольника)
- Схемы для вырезания
- Конуса
- Пирамиды
- Шестигранника
- Макета с припусками
- Параллелепипеда
- Трапеции
- Овала
- Многогранника
- Параллелограмма
- Задание 1 (определение вида треугольников)
- Шаблоны для склеивания
- Сложных фигур
- Октаэдра
- Тетраэдра
- Икосаэдра
- Додекаэдра
- Гексаэдра
- Фигурок из треугольников
- Виды углов
- Макеты из бумаги
- Оригами
- Животные
- Корабль
- Полигональные чертежи
- Игрушки из фигур
- Геометрические маски
- Карандаш
- 🔥 Видео
Математика процесса
Для начала определимся с собственно задачей. Для каждой точки на экране у нас имеются две экранные координаты в декартовой системе координат, и нам необходимо найти для неё сферические координаты (фактически, широту и долготу), которые по сути и являются текстурными координатами для карты планеты.
Итак. Переход от сферической системы координат к декартовой задаётся системой уравнений (взято с Википедии):
а обратный переход — такими уравнениями:
Координату Z мы легко можем получить из X и Y, зная радиус, а сам радиус мы можем принять равным единице.
В дальнейшем договоримся о том, что приведённые выше уравнения мы слегка изменим, поменяв местами понятия Y (у нас это будет экранная вертикаль) и Z (это будет глубина сцены).
Техническая часть
Реализация идеи потребует от нас применения квада (я уже писал о том, как его использовать, поэтому повторяться не буду, тем более что ниже приведена ссылка на полный исходный код проекта), а также двух текстур: собственно карты планеты (я использовал текстуру Земли размера 2048×1024) и карты текстурных координат. Код генерации второй текстуры аккуратно повторяет математику преобразования из декартовых координат в сферические:
Отметим, что координаты X и Y переводятся из диапазона [0..texSize] в диапазон [-1..1], а текстурные координаты U и V переводятся из радианов в диапазон [0..255], после чего записываются соответственно в красную и зелёную компоненты 32-битной текстуры. Альфа-канал используется для сохранения «глубины» (координаты Z), а синий пока остаётся незадействованным. Отключение билинейной фильтрации также не случайно: на данном этапе она не даёт какого-либо эффекта (соседние точки в любом случае имеют одни и те же значения, с довольно резкими скачками), а в том, что я собираюсь показать дальше, она и вовсе будет вредна. Но об этом ниже.
Обе текстуры подаются на вход простого пиксельного шейдера (здесь и далее картинки кликабельны):
Код отрисовки сцены я не привожу, т.к. в нём всё довольно тривиально (и, опять же, его можно посмотреть в полном исходнике), да и сам шейдер довольно примитивен. Самое любопытное в нём, пожалуй, то, что альфа-канал пока лишь проверяется на положительность, тогда как можно было бы задействовать его для эффекта освещения.
Получилось уже довольно неплохо, однако как-то плоско, плюс хотелось бы добавить собственно вращение планеты вокруг своей оси.
Включаем в шейдер ещё один параметр (будем менять его в зависимости от времени в диапазоне [0..1]), плюс добавляем «глубину» (умножение цвета на значение из альфа-канала):
Что ж, к самой сфере претензий нет, однако картинка выглядит как-то… восьмибитно, что ли. И неудивительно: мы же записывали текстурные координаты в диапазоне [0..255] (максимум, доступный нам в обычных цветовых компонентах), а значит наша текстура может иметь не больше 256 точек в высоту (и 512 в ширину, учитывая вращение). Маловато, нужна как минимум 10-битная точность.
Увеличиваем разрешение
Сразу предупреждаю: описанный здесь код может криво работать на каких-либо устройствах, хотя мне удалось добиться нормальной отрисовки на всех устройствах, которые я смог подержать в руках. В любом случае, описанное здесь является обычным хаком.
Итак, у нас пока задейстованы две из трёх цветовых компоненты, т.е. 16 бит из 24. Ну так упакуем же данные так, чтобы каждая текстурная координата имела размер 12 бит, что позволит нам работать с текстурами размером до 4096 пикселей в высоту! Для этого изменим буквально три строчки в программе:
и напишем новый шейдер, учитывающий 12-битную схему адресации (именно в этом месте необходимо, чтобы билинейная фильтрация была отключена!):
Ну это же совсем другое дело! С небольшими изменениями (добавив масштабирование «щипком» и вращение пальцем) я эту программу показывал своим друзьям и колегам, и при этом спрашивал, сколько, по их мнению, в этой сцене треугольников. Результаты варьировались, да и сам вопрос вызывал подозрение в наличии подвоха (в этом случае респонденты шутили «один», что было недалеко от истины), но правильный ответ стабильно удивлял. И все, как один, спрашивали: а почему сферу можно крутить вокруг одной оси, но нельзя наклонять. Хм.
Наклон
А дело в том, что наклон в этой схеме реализовать существенно труднее. На самом деле, задача не является неразрешимой, и я с ней даже справился, но не обошлось без нюансов.
В сущности, задача сводится к тому, чтобы взять смещённую координату V, тогда как координата U не меняется: это происходит потому, что мы добавляем вращение вокруг оси X. План такой: преобразуем текстурные координаты в экранные (в диапазоне [-1..1]), применяем к ним матрицу поворота вокруг горизонтальной оси (для этого заранее запишем в новую константу uTilt синус и косинус угла наклона), а дальше воспользуемся новой координатой Y для выборки в нашей шаблонной текстуре. «Повёрнутая» координата Z нам тоже пригодится, с её помощью мы отзеркалим долготу для обратной стороны шарика). Экранную координату Z придётся посчитать явно, чтобы не делать две текстурных выборки из одной текстуры, заодно это повысит её точность.
Ура, наклон удался! Вот только странный шум на границе полушарий немного смущает. Очевидно, проблема кроется в недостаточной точности адресации в граничных точках (точки на самой окружности соответствуют слишком большому диапазону координат, один тексель расползается на интервал довольно заметной длины). В конце концов, мне удалось это победить, используя две сгенерированных текстуры вместо одной.
В итоге, можно приближать и крутить шарик почти так же, как в Google Earth. С тем отличием, что здесь — всего-навсего два треугольника.
Ну и, наконец, обещанное. Исходный код проекта доступен на GitHub.
Также можно скачать готовый .apk-файл.
Кстати, исходники для моих прошлых постов доступны там же.
Update: Кажется, мне всё-таки удалось добиться точного текстурирования на всех устройствах, это потребовало немного изменить порядок битов, а также немного подкорректировать округление цветов шаблонной текстуры. Теперь даже насильно сжатые текстуры должны работать более-менее нормально. Код на GitHub обновлён, новые .apk-файлы залиты.
Update 2: Всё-таки артефакт на границе полушарий был побеждён. Исходники и готовый .apk обновлены.
Кроме того, я добавил ещё один бонус: WebGL-версия этой демки доступна здесь.
Видео:Икосаэдр из бумаги. Чертёж развертки икосаэдра.Скачать
Как сделать кусудамы из бумаги своими руками, простые схемы
Кусудамы ‒ бумажные шары из модулей в технике оригами. Прототипом этих украшений считается помандер, но не европейский, а японский. Первые кусудамы появились в VIII веке и представляли собой круглые тканевые мешочки, наполненные целебными травами и увитые цветами. Позднее им на смену пришли бумажные аналоги, получившие название «шары счастья». Во второй половине XX века были разработаны новые разновидности кусудам, известные как модульные. Они представляют собой многогранники, которые при простоте сборки, впечатляют изысканной красотой и разнообразием форм.
Видео:3Д ШАР ИЗ БУМАГИ своими руками НОВОГОДНИЕ ИГРУШКИ СВОИМИ РУКАМИСкачать
Модульные кусудамы
До сих пор ведутся споры, считать ли «шары счастья» разновидностью оригами или это ‒ отдельный вид искусства. Проблема в том, что отдельные элементы таких кусудам, чаще всего цветы, сшиваются или склеиваются между собой, что нарушает чистоту технологии. Модульные разновидности удерживаются только за счёт трения, а потому полностью соответствуют принципам классического оригами.
Задача мастеров в этом случае ‒ создать симметричную модель, которая будет выглядеть одинаково со всех сторон. Самое ранее упоминание о модульных кусудамах встречается в иллюстрированной книге «Рамма Дзусики», выпущенной в 1734 году Хаято Охокой. Среди нескольких традиционных моделей, можно увидеть кубик «таматэбако», сложенный из шести одинаковых элементов.
Затем о модульных кусудамах из бумаги основательно забыли и вернулись к ним 230 лет спустя, уже в XX веке. В 1965 году Исао Хонда ‒ автор книги «Мир оригами», воспроизвёл на её страницах схему «таматэбако». Интерес к бумажным многогранникам вырос ещё больше, после изобретения в 1970-х годах модуля Сонобе. Он представляет собой сложенный определённым образом параллелограмм с выступом и «карманом» для соединения.
Официально «отцом» модуля считается японский оригамист Мицунобу Сонобе, однако есть ещё несколько претендентов на это открытие. Независимо от авторства, изобретение можно смело назвать революционным, поскольку оно позволяет собрать из бумаги практически все известные многогранники.
Оригамисты всего мира продолжают развивать многогранные кусудамы, предлагая всё новые модели, а также варьируя схемы исходного модуля. Вот лишь несколько известных разновидностей, которые подойдут для начинающих взрослых или детей. Вдобавок к эстетичному виду, у этих моделей удивительно поэтичные названия.
Тройной драгоценный камень
Классическую кусудаму на основе модуля Сонобе лучше складывать из нескольких видов бумаги, чтобы чётко выделить каждый элемент. Схема сборки состоит из 9 шагов. На основе одного модуля, можно сложить сразу три многогранника: куб, звёздчатый октаэдр и икосаэдр.
Описание поэтапно:
- Сначала изготовим модуль из квадратного листа, размером 10х10 см. Для этого располагаем заготовку изнанкой вверх и складываем пополам.
- Раскрываем. Правый и левый край сгибаем к намеченной в шаге 1 центральной оси.
- Вновь раскрываем складки.
- Правый верхний и левый нижний углы подгибаем, ровняя по соседним линиям.
- Повторяем шаг 2. Складываем по диагонали левый верхний и правый нижний угол. Раскрываем складки.
- Заводим углы внутрь фигуры.
- Прижимаем и проглаживаем линии сгибов.
- Переворачиваем заготовку. Делаем складки «горой» и «долиной».
- Ещё раз переворачиваем. По центру у нас образовалось 2 треугольных «кармана», в которые вставляются острые уголки.
Модуль Сонобе готов. Из 6-и элементов получается куб, из 12-ти ‒ октаэдр, а для икосаэдра понадобится 30 деталей.
Сделанные своими руками из бумаги кусудамы, легко превратить у интерьерные украшения:
Магнолия чампака
Прекрасные цветы этого дерева, мастера оригами воплотили в утончённом шаре-кусудаме из бумаги. Магнолия чампака в азиатских странах считается символом любви и нежной женственности. Не менее утончённо смотрится и модель с тем же названием.
Схема модуля с описанием пошагово:
- Квадрат любого размера делим пополам. Разрезаем. Делим одну из получившихся половинок на 3 части по длинной стороне. Раскрываем. Складываем левый верхний и правый нижний угол по диагонали.
- Подгибаем обе стороны «горой».
- Переворачиваем.
- Складываем углы, как показано на схеме.
- Подгибаем светлые треугольники по пунктиру. Концы отворачиваем в обратную сторону.
- Раскрываем модуль по стрелкам.
- Переворачиваем.
- Складываем по намеченным линиям «горой» и «долиной».
- Стрелками указаны «карманы» и выступы, которые нужно завести в них.
- Всего для шара-кусудамы «Магнолия чамапка» понадобится 30 модулей.
Бозо ‒ так в США называют популярного комического персонажа, клоуна с забавным лицом и ярко-рыжими волосами. Начиная с середины прошлого века, он входит в число символов американской культуры и, похоже, не собирается «уходить на покой». Один из модульных шаров-кусудам посвящён этому весёлому герою. Модель выглядит ярко и необычно, к тому же она лёгка в изготовлении и станет отличным вариантом декора для детского праздника.
Описание пошагово:
- Снова работаем с половиной листа. Сгибаем его вдвое и раскрываем.
- Правую сторону складываем, совмещая край с центральной осью. С левой делаем то же самое, но раскрываем сгиб.
- Подворачиваем правый угол.
- Раскрываем складку.
- Поворачиваем заготовку на 180°. Повторяем шаги 2 ‒ 4 с противоположного края.
- Подгибаем углы, как показано на схеме.
- Переворачиваем лист на обратную сторону.
- Правый край сгибаем к середине.
- Заготовку раскрываем с левого нижнего угла и сплющиваем.
- Повторяем шаги 8 и 9 с другой стороны.
- Складываем получившийся модуль по пунктирным линиям.
- Закручиваем уголки по стрелкам на карандаш или ручку.
Всего понадобится 30 таких элементов. И красочная поделка-кусудама завершена:
Голубь
Модель действительно напоминает взъерошенную птицу. Её можно смело отнести к самым простым модульным шарам-кусудамам.
Описание пошагово:
- Нам понадобится лист с пропорциями 1:3. Начинаем с лицевой стороны. Левый край совмещаем с правым.
- Намечаем середину заготовки.
- Аналогично, путём сгибания, обозначаем диагонали.
- Делаем складки «горой» и «долиной».
- Отводим назад левую часть.
- Повторяем шаги 2 ‒5 напротив.
- Снова складываем модуль по пунктирным линиям.
- Находим пазы и выступающие элементы крепления. Соединяем с их помощью 30 модулей, сделанных по той же схеме:
Фото-рамка
Оригинальная подставка для любимых фотографий:
Чернослив
Необычный и простой шар-кусудама с оригинальным названием:
Розовый куст
Схемы для начинающих хорошо понятны в картинках, но для создания более сложных моделей понадобится видео-урок:
Видео:FreeCad Сфера из треугольниковСкачать
Пирамида из бумаги своими руками. Схемы и способы изготовления
Видео:Сборка из магнитного конструктора "шар из треугольников"Скачать
Как сделать объемные геометрические фигуры
Дети познают мир в процессе игры и творчества. Трехмерные фигуры, выполненные своими руками, помогут познакомиться с удивительной наукой — геометрией.
Примеры трафаретов и шаблонов можно скачать из Интернета и распечатать. Затем все фигуры вырезают и склеивают. Дети старшего возраста могут самостоятельно нарисовать развертку нужной фигуры, малышам помогают родители,.
Геометрические объекты делают из бумаги (белой или цветной), картона. Из последнего материала они получаются плотными и прочными.
Из бумаги
к оглавлению ^
Из картона
к оглавлению ^
Развертки куба
Треугольника
Прямоугольника
Цилиндра
к оглавлению ^
Ромба
к оглавлению ^
Призмы
Видео:как построить магнитный шарСкачать
Задание 2 (построение прямоугольного треугольника)
Постройте на нелинованной бумаге треугольник , чтобы угол был прямым, длина стороны равнялась 15 см, а длина сторогы – 20 см.
Построим точку (Рис. 18).
Проведем через точку прямую (Рис. 19).
Рис. 19. Прямая, проведенная через точку
Для построения прямого угла воспользуемся прямоугольным треугольником. Приложим треугольник так, чтобы вершина прямого угла совпала с точкой , а одна из сторон совпала с лучом, как показано на рис. 20.
Рис. 20. Построение прямого угла
Проведем по второй стороне прямого угла треугольника луч из точки и получим прямой угол (Рис. 21).
Рис. 21. Полученный прямой угол
Выполним построение сторон треугольника. Построим отрезок , который равен 15 см (Рис. 22).
Построим отрезок , который равен 20 см (Рис. 23).
Соединим полученные точки отрезком . Мы получили прямоугольный треугольник (Рис. 24) с прямым углом и сторонами см и см.
Рис. 24. Треугольник
Видео:В Екатеринбурге упала летающая тарелкаСкачать
Схемы для вырезания
Ученикам 1–2 класса демонстрируют в школе простые геометрические фигуры и 3d: квадрат, кубик, прямоугольник. Их несложно вырезать и склеить. Шаблоны развивают мелкую моторику у детей и дают первые представления о геометрии.
Ученики средней школы, которые изучают черчение, делают сложные фигуры: бумажные шестигранники, фигуры из пятиугольников, цилиндры. Из бумаги для детей выполняют домики для кукол, мебель, оригами, замок для маленьких игрушек, маски на лицо (трехмерные называются полигональными).
Конуса
Пирамиды
Шестигранника
Макета с припусками
к оглавлению ^
Параллелепипеда
Трапеции
Овала
к оглавлению ^
Материал, из чего можно сделать плотный шар — картон или плотная бумага.
Многогранника
Параллелограмма
к оглавлению ^
Видео:Построение недостающих проекции сквозного отверстия в сфереСкачать
Задание 1 (определение вида треугольников)
Назовите номера тупоугольных, остроугольных и прямоугольных треугольников на рисунке 16.
Рис. 16. Иллюстрация к заданию 1
Треугольник номер 1 – остроугольный, у него все углы острые. Треугольники номер 3 и 4 – тупоугольные, каждый из них имеет один тупой угол. Фигура номер 2 – прямоугольный треугольник. Проверим, действительно ли эта фигура имеет прямой угол, с помощью прямоугольного треугольника (Рис. 17).
Рис. 17. Проверка треугольника номер 2
Мы видим, что вершины и стороны прямого угла совпали, значит, угол прямой, а треугольник прямоугольный.
Видео:Как сделать модули для модульного оригами - Основы модульного оригами, для начинающихСкачать
Шаблоны для склеивания
Зачастую школьники задаются вопросом, что можно сделать из бумаги к урокам труда или на выставку. Работы ученика выделятся среди остальных, если это будут сложные трехмерные предметы, рельефные геометрические фигуры, платоновы тела, шаблоны кристаллов и минералов.
Если следовать инструкции, то ученик 5–6 класса сможет без помощи родителей сделать точный додекаэдр или тетраэдр.
Иногда в школе задают логические задания, как из квадрата сделать круг или шестиугольник. Для этого определить центр квадрата, согнув его по диагонали. Точка пересечения прямых — центр квадрата и будущего круга. Исходя из этого, можно начертить круг.
Сложных фигур
к оглавлению ^
к оглавлению ^
Октаэдра
Тетраэдра
Икосаэдра
Додекаэдра
Гексаэдра
к оглавлению ^
Фигурок из треугольников
к оглавлению ^
Видео:Как сделать ЧЕТЫРЕХУГОЛЬНУЮ ПИРАМИДУ из бумаги? ||| Геометрические фигуры своими рукамиСкачать
Виды углов
Развернутый угол. (Рис. 4)
Угол называется развернутым, если его стороны лежат на одной прямой.
Рис. 4. Виды углов: развернутый
Прямой угол (Рис. 5)
Прямой угол составляет половину развернутого.
Рис. 5. Виды углов: прямой угол
Прямой угол можно получить путем складывания бумаги. Сложив лист дважды, мы получим модель прямого угла, его составляют линии сгиба.
Приложим модель угла к углу на чертеже (Рис. 5) таким образом, чтобы углы и стороны совпали (Рис. 6).
Рис. 5. Модель угла и угол на чертеже | Рис. 6. Модель угла, приложенная к углу на чертеже |
Мы убедились, что на чертеже действительно изображен прямой угол.
Для удобства определения, прямой угол или нет, используют особый инструмент – прямоугольный треугольник (Рис. 7).
Рис. 7. Прямоугольный треугольник
Непрямые углы делятся на острые (Рис. и тупые (Рис. 11).
Рис. 8. Виды углов: острый угол Острый угол меньше прямого (Рис. 10). |
Рис. 10. Сравнение острого и прямого угла
Тупой угол больше прямого (Рис. 12).
Рис. 12. Сравнение тупого и прямого угла
Видео:оригами пирамида как сделать пирамиду из бумаги схема пирамида хеопса How to make Paper PyramidСкачать
Макеты из бумаги
Макетирование — увлекательное занятие. Оно помогает развить воображение и логическое мышление. Из бумаги делают не только фигуры, но и необычные скульптуры, статуэтки, шестиугольные–двенадцатиугольные предметы, наклонные объекты (например, Пизанскую башню), карандаши, линейки. На фото и картинках можно посмотреть, как выглядят оригинальные поделки из бумаги.
Школьники младших классов или дошколята делают бумажные объемные поделки. Например, предметы из овала — веер, цветы, гусеницы. Для них потребуются овалы и круги разного диаметра. Раскладки склеиваются между собой, получаются трехмерные игрушки.
Оригами
к оглавлению ^
Животные
к оглавлению ^
Корабль
Применяется множество вариантов, как сделать кораблик из бумаги.
к оглавлению ^
Полигональные чертежи
к оглавлению ^
Игрушки из фигур
к оглавлению ^
Геометрические маски
Карандаш
к оглавлению ^
🔥 Видео
КАК СДЕЛАТЬ ИДЕАЛЬНЫЙ ШАР ИЗ ФОЛЬГИСкачать
Создание сферы в компасеСкачать
Фигуры из змейки Рубика:Шарик(#3)HDСкачать
развертка сферыСкачать
Студенты российского вуза разработали вечный двигатель #вечныйдвигатель #изобретенияСкачать
Математика это не ИсламСкачать
Как сделать конус из бумаги.Скачать
Украшение интерьера шары из бумаги сделаем своими руками-красиво, украшения елочныеСкачать
Развертка тетраэдра - это легко! Как сделать объёмную правильную треугольную пирамиду из бумаги?Скачать
Как нарисовать ШАР (сфера). Построение , штриховка.Скачать