Totoro 3 563 Опубликовано: 29 августа, 2015 (изменено) Библиотека для загрузки трехмерных моделей в формате OBJ и вывода их на очки OpenGlasses. (Формат OBJ - один из самых широко распространенных форматов моделей. Практически все пакеты трехмерного моделирования его поддерживают. Помимо этого, большое количество готовых моделей можно найти в интернете.) Исходный код: http://pastebin.com/JyK7KTCQ Используя несложный интерфейс, вы легко можете сделать что-то вроде этого: Единственный минус - скорость отрисовки, которая возврастает пропорционально количеству полигонов. Череп на скриншоте состоит приблизительно из 9000 полигонов и отрисовывался около 5 минут. API библиотеки load(filename: string) - загружает модель из указанного файла. Расширение ".obj" указывать. draw(glasses: table) - отрисовывает модель на указанном компоненте типа "glasses". setPosition(x: number, y: number, z: number) - положение модели относительно терминала очков setScale(s: number) - масштабирование модели. 1.0 - масштаб 1 к 1. Размеры моделей могут очень варьироваться в разных OBJ файлах, поэтому подстройка масштаба вам скорее всего потребуется в любом случае. setColor(r: number, g: number, b: number) - цвет модели. Указывается числами от 0.0 до 1.0, в стандартной палитре RGB. getPosition(): table - возвращает таблицу вида {x, y, z}. Ключи полей - числа от 1 до 3. getScale(): table - возвращает масштаб модели. getColor(): table - возвращает цвет модели вида {r, g, b}. Ключи полей - числа от 1 до 3. getVertexNum(): number - возвращает число вершин модели getPolyNum(): number - возвращает число полигонов модели Пример использования local obj = require('obj') local com = require('component') local glasses = com.glasses glasses.removeAll() obj.load('wolf.obj') obj.setScale(0.01) obj.setPosition(0, 0, 5) obj.setColor(1, 1, 1) obj.draw(glasses) print('Vertex: '..obj.getVertexNum(), 'Poly: '..obj.getPolyNum()) Файл библиотеки при этом должен иметь название obj.lua. Результат выполнения будет выглядеть примерно так: P.S. Модели с большим количеством полигонов будут мерцать, так как очень сильно увеличат расход энергии на терминал очков. На сервере рекомендуется использовать менее полигональные модели. А в сингле - отредактировать файл конфигурации мода OpenGlasses и снизить расход энергии. Изменено 29 августа, 2015 пользователем Totoro 17 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 29 августа, 2015 Круто конечно... Только зачем? Зачем обычному игроку 3D модели у двора? Ему бы ресов накопать, да мобов поубивать. А так, прога хорошая. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 29 августа, 2015 Кодят в первую очередь для удовольствия) 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 29 августа, 2015 Круто конечно... Только зачем? Зачем обычному игроку 3D модели у двора? Ему бы ресов накопать, да мобов поубивать. А так, прога хорошая. Откуда такой пессимистичный настрой? Зачем? 1) Круто. 2) Для личного удовольствия, которое я получил в процессе написания и созерцания результатов. 3) Для красоты. Парочку моделей можно поставить например на спавне. И тогда у него будет две ипостаси - обычная и виртуальная, не видимая без очков. ) 4) Круто. 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 29 августа, 2015 Кодят в первую очередь для удовольствия) Не могу не согласиться) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hugl 4 Опубликовано: 29 августа, 2015 извините, я два дня как изучаю данный мод. подскажите пожалуйста как запустить программу? пошагово если не трудно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 29 августа, 2015 извините, я два дня как изучаю данный мод. подскажите пожалуйста как запустить программу? пошагово если не трудно. Сингл или сервер? Есть ли доступ к сейву мира? Это важно, потому что от этого зависит как ты будешь загружать файл с моделью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hugl 4 Опубликовано: 29 августа, 2015 сингл естественно) в общем модель я загрузил, ввел pastebin get JyK7KTCQ obj (где obj я ввел просто так, как бы свое название программы) и все...дальше не знаю что делать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 29 августа, 2015 Ну тогда все немного проще. 1) (Желательно. Чтобы модели не моргали) Редактируешь конфиг мода OpenGlasses. Снизь энергопотребление и повысь объем буфера. 2) Скопируй модель OBJ на жесткий твоего компьютера. 3) Скопируй, или скачай мою библиотеку (команда pastebin get JyK7KTCQ obj.lua, если есть интернет-плата) 4) Напиши свою программу. Для теста возьми пример из первого поста, только замени в нем название файла. 5) Все сохрани, и запусти свою программку-тест. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hugl 4 Опубликовано: 29 августа, 2015 Свои программы мне писать еще долеко...я даже lua толком не знаю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hugl 4 Опубликовано: 29 августа, 2015 когда запускаю obj.lua ничего не происходит (вообще) а когда запускаю это(я изменил wolf,obj на cat,obj короче свою модель и закинул я ее в world/opencomputers/мой ж.диск) то консоль исчезает и появляется какой то чат что ли...незнаю что это, когда пишу что нибудь(любое сообщение) то оно дублируется local obj = require('obj')local com = require('component')local glasses = com.glassesglasses.removeAll()obj.load('wolf.obj')obj.setScale(0.01)obj.setPosition(0, 0, 5)obj.setColor(1, 1, 1)obj.draw(glasses)print('Vertex: '..obj.getVertexNum(), 'Poly: '..obj.getPolyNum()) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 29 августа, 2015 (изменено) когда запускаю obj.lua ничего не происходит (вообще) а когда запускаю это(я изменил wolf,obj на cat,obj короче свою модель и закинул я ее в world/opencomputers/мой ж.диск) то консоль исчезает и появляется какой то чат что ли...незнаю что это, когда пишу что нибудь(любое сообщение) то оно дублируется Саму библиотеку (obj.lua) запускать и не надо. Ее надо использовать через программу. Ты наверное не прилинковал очки. Очки из мода OpenGlasses кликнуть ПКМ по терминалу очков (блок такой, с зеленым узором). А потом надеть, вместо шлема. Из программы убери строку setScale(0.01). Модель волка у меня была очень большой. Строку setPosition тоже можно убрать. Когда запускается программа, там ничего нажимать не надо. Просто жди, и смотри где-то возле блока-терминала очков. Должна начать отрисовываться модель. Когда дорисуется, на компьютере появится сообщение про число вокселей и полигонов. Изменено 29 августа, 2015 пользователем Totoro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hugl 4 Опубликовано: 29 августа, 2015 что я только не сделал... и очки включил и комп перезагрузил...может что то не так делаю... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 29 августа, 2015 (изменено) что я только не сделал... и очки включил и комп перезагрузил...может что то не так делаю... Я сделал все, что было в моих силах, и более не властен над твоей судьбой. Теперь тебе може помочь только Он. Я скрещу за тебя пальцы. Аминь. Изменено 29 августа, 2015 пользователем Totoro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hugl 4 Опубликовано: 29 августа, 2015 Я сделал все, что было в моих силах, и более не властен над твоей судьбой. Теперь тебе може помочь только Он. Я скрещу за тебя пальцы. Аминь. может у меня модель слишком кривая? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hugl 4 Опубликовано: 30 августа, 2015 Как окозалось все прекрасно работало только вот 1 нюанс... в майне лупы нет =_= зачем мне нанокошка 2 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
evgkul 571 Опубликовано: 30 августа, 2015 scale выстави добавь setScale(10) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov 34 Опубликовано: 30 августа, 2015 Как окозалось все прекрасно работало только вот 1 нюанс... в майне лупы нет =_= зачем мне нанокошка Выглядит здорово)) 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 30 августа, 2015 (изменено) Как окозалось все прекрасно работало только вот 1 нюанс... в майне лупы нет =_= зачем мне нанокошка Конечно же ловить наномышей! Изменено 30 августа, 2015 пользователем Totoro 7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov 34 Опубликовано: 30 августа, 2015 Скиньте модель этой киски, плиз) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах