… on the other hand…

Don't click here!
The Turtle
My CV.

Three.js

by Dima on 11/23/2016

Достался мне тут на переработку сайт, на котором очень так хорошо three.js используется.
Ну я решил его на angular2 переписать. В общем, используя новейшие технологии.
Я пропущу описание эмоций, которые я испытывал и испытываю по поводу angular2.
Они сильны и неоднозначны, но не настолько, как эмоции по отношению к three.js.
В общем, написал directive, который объект при помощи three.js выводит. Перенес код с доставшегося сайта. Там все как-то очень непросто человек сделал. Причину этого непросто я пока не разбирал, ощущение, что очень хотелось сделать красиво, но получилось сложно. Проверил, вродек все нормалньо. Открываю браузер.. Не работает.
Что же такое. Начинаю разбираться и разбираюсь два дня. Все нормально, но ничего не показывает.
И тут мне пришла в голову догадка, которую я, конечно же, должен был в первую очередь проверить. Я поставил ту же версию Three.js, которая была на старом сайте – r74 вместо r82.
И, оп-па, все работает.
Начал разбираться. Проверил документацию по миграции здесь. Вроде все неплохо. Все должно работать.
Через некоторое время нашел, что уже в r75 все перестает работать.
Ну что же. Взял обе версии, сравнил файлы.
И нашел…
Вот эту чудесную правку.
Конечно же, разработчик пользовался THREE.InstancedBufferGeometry. Я пока не достаточно силен в использовании Three.js, потому не могу сказать насколько обосновано. Но здесь прямым текстом сказано:
this.maxInstancedCount = undefined;
В общем, после добавления
geometry.maxInstancedCount = 1;
все заработало. Но нервов потрачено.. Много.
Вот не знаю, писать им это как баг. Или я просто не нашел нужного места в документации.
Для любителей поиграться – вот.

Leave a Reply

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