Навчання WebGL та three.js [закрито]


143

Я новачок і починаю дізнаватися про 3D-комп'ютерну графіку у веб-браузерах. Мені цікаво робити 3D-ігри в браузері. Для всіх, хто навчився як WebGL, так і three.js ...

  1. Чи потрібні знання WebGL для використання three.js?

  2. Які переваги використання tri.js проти WebGL?


10
Використовуйте Three.js. Період. Це саме те, що Захід говорить нижче, тоді як просто теоретично писати WebGL з нуля - це біль. Є так багато речей, що майже кожному додатку WebGL потрібно буде / захоче зробити. Ці речі можна абстрагуватися від вас. Також Three.js перетворився на дивовижну бібліотеку. Якщо ви перевірите Google Trends або кількість запитань SO, ви побачите, що це вийшло набагато випереджаючи конкуренцію.
theblang

4
@GeorgeStocker На насправді, відповіді на це питання ще НЕ були засновані головним чином на думку, але на фактах, посилань і спеціальних знань. Це було цінним повідомленням для спільноти there.js, і частина (2) питання, безумовно, прийнятна. Як би ви рекомендували переробити це слово, щоб воно було прийнятним для вас - тобто, не змінюючи значення / наміру питання?
WestLangley

@WestLangley Я не чув нічого, окрім думок у відповідях; не кажучи вже про "плюси і мінуси використання будь-якої [бібліотеки]" є занадто широкою для переповнення стека.
Джордж Стокер

2
@GeorgeStocker Ваша відповідь - сама думка, і я категорично не згоден з цим. Як би ви порадили переформулювати публікацію, щоб вона була прийнятною для вас?
WestLangley

1
Можливо, питання можна перефразувати, щоб задати, наскільки вивчення WebGL вигідне для використання Three.js. Відповідь на це підтверджуватимуться фактами, посиланнями та експертизою.
zz85

Відповіді:


203

Оскільки у вас є великі амбіції, вам доведеться вкласти час, щоб вивчити основи. Справа не в тому, що ви дізнаєтесь спочатку - ви можете навчитися їх одночасно, якщо хочете. (Це я і зробив.)

Це означає, що вам потрібно зрозуміти:

  1. Концепції WebGL
  2. Three.js
  3. Основні математичні поняття

Three.js. Three.js чудово справляється з вилученням багатьох деталей WebGL, тому особисто я б запропонував використовувати Three.js для свого проекту. Але пам’ятайте, що Three.js знаходиться в альфа , і він часто змінюється, тому вам потрібно бути готовим до цього. Більшість людей вивчають Three.js, вивчаючи приклади. Уникайте застарілих книг та навчальних посібників та уникайте прикладів із мережі, які посилаються на старі версії бібліотеки.

WebGL. Якщо ви використовуєте Three.js, вам не потрібно знати, як програмувати в WebGL, потрібно просто зрозуміти поняття WebGL. Це означає, що вам просто потрібно мати можливість читати чужий код WebGL і розуміти, що ви прочитали. Це набагато простіше, ніж очікувалося, щоб написати програму WebGL самостійно з нуля. Ви можете досить добре вивчити поняття WebGL, використовуючи будь-які підручники в мережі, наприклад, навчальний посібник для початківців на веб- сайті WebGLFundamentals.org та навчання веб-веб-сайту .

Математика. Знову ж таки, вам потрібно хоча б зрозуміти поняття. Три хороші книги:

  1. 3D-математичний буквар для графіки та розвитку ігор Флетчер Данн та Іен Парберрі

  2. Основна математика для ігор та інтерактивних застосунків: Посібник програміста Джеймса М. Ван Верта та Ларса М. Бішопа

  3. Математика для програмування 3D-ігор та комп’ютерна графіка Еріка Ленгеля

Сподіваюся, це вам корисно. Удачі.


який найкращий сайт, щоб дізнатися про концепції webgl від початку до кінця на легкій англійській мові. Або, принаймні, коли автор використовує якесь «слово», він / вона робить це після того, як описав його один раз, перш ніж будувати на ньому.
Мухаммед Умер

Дивіться посилання на навчальний посібник WebGL в тій частині публікації.
WestLangley

22

Існує дуже хороший онлайн-курс - Інтерактивна 3D-графіка за посиланням https://www.udacity.com/course/cs291 на THREE.js. Цей курс включає завдання також для отримання практичного досвіду. Він охоплює всі основні поняття Three.js та Комп'ютерна графіка


13

Мої особисті думки такі:

  • Якщо у вас є достатньо часу, ви можете навчитися обом, але зауважте, що WebGL набагато нижчий, ніж Three.js.
  • Для першого 3d проекту експерти пропонують використовувати бібліотеку типу Three.js, щоб звикнути до термінів та загальної 3d моделі.

3
Я згоден з цим. На даний момент схоже, що це може бути непогано мати і те, і інше. Я б почав з вивчення Three.JS, потім зроби кілька шейдерів з GLSL і весь час намагаюся дізнатися більше про WebGL.
Cory Gross

11

Який би напрямок ви не вибрали, я пропоную вам вивчити / полірувати свої навички лінійної алгебри . Тоді продовжуйте вивчати чи полірувати своє розуміння розмірів MVP (Model View Projection) . Three.JS може абстрагувати велику частину цього, але я думаю, що ключовим є те, що люди добре розуміють ці поняття, перш ніж серйозно ставитися до будь-якої 3D-розробки.

Я написав вступну статтю про MVP, коли вперше вивчав 3D програмування з OpenGL. Я зрозумів, що поки мені не вдалося пояснити, що таке матриці перетворення, і як вони співвідносяться з різними вимірами / просторами, я насправді взагалі не знав жодного 3D-програмування, хоча міг винести об'єкти на екран.

Оскільки ваша мета полягає у створенні ігор, я думаю, що ви отримаєте багато користі від того, щоб вивчити спочатку якийсь сирий WebGL, навіть якщо ви в кінцевому підсумку використовуєте таку структуру, як Three.js, щоб пізніше написати ваш код.


10

"WebGL - це 2D API, а не 3D API"

http://webglfundamentals.org/webgl/lessons/webgl-2d-vs-3d-library.html

У цій статті описано принципові відмінності між бібліотеками WebGL та 3d, такими як tri.js.
Що зробило мій вибір між WebGL або Three.js непродуманим.


Цитата не з основного тексту пов’язаної сторінки. Я частково приймаю аргументи, викладені на пов'язаній сторінці. Не про те, щоб бути 2D API, а про те, щоб це був API растризації (який підходить для двовимірної та тривимірної графіки).
Elias Hasle

6

Я прийшов з фоном Unity3D, а також Papervision3D ще в той час, тому я добре розумів, як працювати з 3D-простором. Three.js - це шлях до вашого початкового стрибка з вивчення того, як працювати з проектами WebGL. Апі дуже хороший, він дуже потужний, і якщо ви перейдете на іншу 3D-технологію, ви будете працювати з дуже маленьким часом.

Я багато часу провів за прикладами Threejs.org - їх є багато, і вони дуже добре відводять тебе і біжать у правильному напрямку. Документи досить пристойні, особливо якщо ви порівнюєте їх з іншими веб-3D-api там.

Ви також можете розглянути можливість придбання безкоштовної експортера Unity3D та безкоштовного експортера (коли я отримав це безкоштовно) експортера з їх магазину додатків (Window> App store). Мені було досить просто налаштувати свою сцену в Unity та експортувати її в Collada для використання з Three.js.

Крім того, я опублікував цей клас, який використовую у Three.js під назвою neo ( http://rockonflash.com/webGL/three/neo.js ). Просто додайте його до свого проекту, а потім зателефонуйте Neo.JackIntoThree (), і він додасть методи / властивості до Object3D для використання у вашому проекті. Такі речі, як DrawAllAxis (), є неоціненними під час налагодження вашої сцени тощо.

Руки вниз, але Three.js - це чудовий шлях - він досить гнучкий, щоб ви могли писати власні шейдери / об’єкти тощо, і досить потужний прямо з поля, щоб допомогти вам досягти своїх цілей.


3

Я підхопив three.js, але також стрибнув у GLSL і багато експериментував з tri.js shaderMaterial. Один із способів вирішити цю проблему - three.js все ще резюмує більшу частину матеріалів для вас, але він також дає вам дуже чистий доступ на низькому рівні до всіх можливостей візуалізації (проекції, анімації).

Таким чином, ви можете наслідувати навіть щось подібне до цього дивовижного підручника з відкритим глідом . Вам не потрібно встановлювати матриці, набирати масиви, оскільки три вже налаштовує це для вас, оновлюючи їх за потреби. Шейдер, однак, ви можете написати з нуля - простим кольоровим відображенням буде два рядки GLSL. Існує також плагін для пост.обробки для three.js, який встановлює всі буфери, повноекранні квадроцикли та інше, для чого потрібно зробити ефекти, але для початку шейдер може бути дуже простим.

Оскільки програмовані шейдери - це суть сучасної 3d графіки, я сподіваюся, що моя відповідь не пропускає суть :) Рано чи пізно кожному, хто це робить, потрібно хоча б зрозуміти, що відбувається під кришкою, це природа звіра. Також, мабуть, важливим є також розуміння 4-го виміру в однорідному просторі.

Ця книга хороша для WebGL.


2

Я просто трохи навчився обох, і я вважаю, що розумію основи webgl, я вважаю, що введення в webgl достатньо, а потім перейти до трьох js. Це буде досить легко, коли ви зрозумієте основні концепції WebGL. Корисні посилання:

  1. Найкращий вступ, який я прочитав: http://dev.opera.com/articles/view/an-introduction-to-webgl/
  2. Вичерпні підручники: http://www.johannes-raida.de/tutorials.htm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.