hugl 4 Опубликовано: 30 августа, 2015 Интересно а можно было бы сделать так что бы модели имели разные цвета а не залитые сплошными Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov 34 Опубликовано: 30 августа, 2015 Можно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hugl 4 Опубликовано: 30 августа, 2015 Хотелось бы...кстати большие модели не отрисовываются пишет нет памяти... 4 по 3.5 установил все равно не хватает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 30 августа, 2015 (изменено) Хотелось бы...кстати большие модели не отрисовываются пишет нет памяти... 4 по 3.5 установил все равно не хватает Программа загружает в память информацию о всех вершинах и полигонах. В принципе можно оптимизировать, выкинув лишние таблицы, но это не сильно увеличит размер модели. Что касается раскраски, тут все не просто. Текстуры реализовать не выйдет, в силу технических причин. Можно сделать окраску различных частей модели в разный цвет, при условии, что эти части представляют собой отдельные меши в самой модели. В принципе. Ну и наконец, можно реализовать что-то вроде фейкового "самозатенения" по полигонам. (Смотреться будет немного "угловато" =) Примерно так: http://i.stack.imgur.com/o90EZ.png только треугольники вместо квадратов) И повысит расход оперативной памяти и время загрузки модели. Изменено 30 августа, 2015 пользователем Totoro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
CrazyGreen 15 Опубликовано: 30 марта, 2016 Я не совсем понял, как загружать модели? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 30 марта, 2016 Я не совсем понял, как загружать модели? Тебе надо залить файлик obj на жесткий OC-компьютера. Если у тебя есть доступ к сейву - просто поищи папку с диском и скопируй файл туда. Если ты играешь на сервере и доступа к сейву мира нет - залей модельку куда-нибудь в интернет, получи на нее прямую ссылку и скачай на OC-компьютер командой wget. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
CrazyGreen 15 Опубликовано: 31 марта, 2016 Тебе надо залить файлик obj на жесткий OC-компьютера. Если у тебя есть доступ к сейву - просто поищи папку с диском и скопируй файл туда. Если ты играешь на сервере и доступа к сейву мира нет - залей модельку куда-нибудь в интернет, получи на нее прямую ссылку и скачай на OC-компьютер командой wget. Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Xytabich 257 Опубликовано: 7 октября, 2016 (изменено) Почти удалось сделать вертексное текстурирование(ну, в данном случае полигональное), но треугольники просвечивают если созданы позже тех, что перед ними Можно чисто теоретически отключать невидимые полигоны, но вот насчет производительности такой штуки остаются вопросы. Любезно сп****в позаимствовав у разрабов MineOS библиотечку по чтению PNG, получилось нечто такое: Карта текстур (у меня "палитра"): P.S. насчет нехватки энергии, дело решается множественным втыкиванием аккумуляторов в округе, и соответственно зарядке их от нескольких источников. P.S.S. как менять размер изображения? Чуть не забыл, если кому интересно, вот код: http://pastebin.com/Znkbt1H3 Необходимые библиотеки: PNGImage(для него deflatelua и crc32lua) Добавленные/измененные методы:loadTexture(string:filename) - загружает текстуру модели в формате png. Можно использовать полупрозрачные текстуры. Необходимо загружать перед моделью.usePalette(boolean:use)(по умолчанию true) - при ложном значении смешивает цвета с текстуры исходя из uv координат модели, иначе берет первый попавшийся цвет(рекомендуется помещать развертку в текстуру вида "палитра"). Необходимо ставить нужное значение так же перед загрузкой модели.setColor/getColor(r,g,b,a) - теперь используют четвертый параметр в виде прозрачности объекта, так же установленный цвет перемножается на цвета текстуры. Код используемый в картинке выше: local obj = require('tobj.lua') local com = require('component') local glasses = com.glasses glasses.removeAll() obj.loadTexture('palette.png') obj.load('object.obj') obj.setScale(0.1) obj.setPosition(0, 1, 0) obj.setColor(1, 1, 1, 1) obj.draw(glasses) Изменено 8 октября, 2016 пользователем Xytabich 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 398 Опубликовано: 8 октября, 2016 У разрабов MineOS ты ничего не воровал. Та либа написана вообще не им. Как и другие две. Но результат зато красивый 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Xytabich 257 Опубликовано: 8 октября, 2016 (изменено) Совсем забыл добавить описание, ну теперь есть оно У разрабов MineOS ты ничего не воровал. Та либа написана вообще не им. Как и другие две. Не знаю к сожалению, как называть тех кто создал, по этому как проще так и описал)) Изменено 8 октября, 2016 пользователем Xytabich Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 8 октября, 2016 Офигительно! С меня лайк, как минимум =) Не знаю к сожалению, как называть тех кто создал, по этому как проще так и описал)) На самом деле это либа от TehSomeLuigi. https://oc.cil.li/index.php?/topic/266-libpngimage-a-preliminary-library-for-decoding-encoding-png-images/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Xytabich 257 Опубликовано: 8 октября, 2016 (изменено) @@Totoro, задумывал реализовывать анимацию? Есть у меня идейка, как сделать это по производительнее, отталкиваться буду от текущей программы: Первым делом загружается основная модель(+ текстуры, если необходимо), при отрисовке треугольники добавляются в таблицу Методом addFrame(filename) добавляется новый кадр анимации в виде того же объекта, но с измененными координатами вершин. В методе идет поиск номеров измененных вершин и полигонов, которые затем заносятся в таблицу кадра. Методом setFrames(f1, f2) устанавливаются два кадра, между которыми будет вестись интерполяция, при этом заполняется таблица с начальным и конечным положением вершин модели Методом animate(t) идет интерполяция выбранных кадров, t=0-1 Примерно так Изменено 8 октября, 2016 пользователем Xytabich Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 8 октября, 2016 @@Totoro, задумывал реализовывать анимацию? Задумывал, да. Я когда-то замышлял сделать что-то типа феи, которая за Линком летала. Типа маленькая моделька, которая машет крылышками, летает по дому за тобой и показывает всякую фигню. Такое виртуальное проявление умного дома. Но дальше задумок дело не пошло. Если у тебя получится - будет здорово. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Xytabich 257 Опубликовано: 8 октября, 2016 (изменено) @@Totoro, интересная мысля слушай, яб хотел такую фею^^вот только насчет того дойдут ли руки до анимации не знаю, весь энтузиазм спустил на текстурирование)) Хотя, если будет время и не изменит память, попробую реализовать задуманное Изменено 8 октября, 2016 пользователем Xytabich Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 8 октября, 2016 @@Xytabich, текстурирование - это уже круто, я считаю. А там может и анимации какие всобачим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Xytabich 257 Опубликовано: 8 октября, 2016 @@Totoro, считай можно уже 3d игру на очках делать 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Xytabich 257 Опубликовано: 9 октября, 2016 (изменено) А может и не угас ещё В принципе по той логике что я описал вышел такой вот тентакль : К сожалению при лагах модель может сломаться на мгновение, что печально... Версия не окончательная, выяснилось что узнать положение треугольников нельзя, придется писать костыль для сохранения их положения. В связи с этим не будет надобности указывать начальный и конечный кадр анимации, указывая конечный кадр, будет браться текущее положение треугольников. Изменено 9 октября, 2016 пользователем Xytabich Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Xytabich 257 Опубликовано: 9 октября, 2016 (изменено) Оно не закончено! Добавил анимацию и возможность поворота модели(немного баговано) Итак, функции: setRotation(x,y,z) - поворачивает объект на указанное кол-во градусов(euler), при повороте почему-то размер модели немного уменьшаетсяloadFrame(string:filename) - добавляет новый кадр анимации, обратите внимание, в анимацию добавляются только те вершины, которые отличаются от основной модели. Кадр загружается после анимации! setFrame(index):boolean - устанавливает целевой кадр, если индекс равен нулю, устанавливается значение модели. Возвращает установлен ли кадр getFramesNum():number - возвращает количество кадров animate(t) - интерполирует(смешивает, анимирует) позицию точек от текущей к целевой, t=0-1setPosition/setRotation/setScale теперь работают при загруженной моделиВот оно само:http://pastebin.com/QJr3u6faКод для примера: local obj = dofile('atobj.lua') local com = require('component') local glasses = com.glasses glasses.removeAll() obj.load('f1.obj') obj.loadFrame('f2.obj') obj.setScale(0.025) obj.setPosition(0, 1, 0) obj.setColor(1, 1, 1, 0.5) obj.draw(glasses) obj.setFrame(1) local t = 0 local s = true while true do obj.animate(t) obj.setRotation(0,t*90,0) if s then t = t+0.1 if t >= 1 then t = 1 s = false end else t = t-0.1 if t <= 0 then t = 0 s = true end end os.sleep(0.1) end А теперь я пойду умирать P.S. Totoro, теперь пили фею, и мне не забудь скинуть Изменено 9 октября, 2016 пользователем Xytabich 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 9 октября, 2016 P.S. Totoro, теперь пили фею, и мне не забудь скинуть Сэр, моё воспитание не позволяет мне пилить таких кавайных существ. :P Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Xytabich 257 Опубликовано: 9 октября, 2016 Сэр, моё воспитание не позволяет мне пилить таких кавайных существ. :P Зато мне позволит *ньяхаха* жаль на скайтече нет чатбокса, даже не знаю как управлять ею Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах