Перейти к публикации
Форум - ComputerCraft
Totoro

OBJ: Виртуальные трехмерные модели [OpenGlasses]

Рекомендованные сообщения

Круто конечно... Только зачем? Зачем обычному игроку 3D модели у двора? Ему бы ресов накопать, да мобов поубивать.

А так, прога хорошая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Круто конечно... Только зачем? Зачем обычному игроку 3D модели у двора? Ему бы ресов накопать, да мобов поубивать.

А так, прога хорошая.

 

Откуда такой пессимистичный настрой?  :)

 

Зачем?

1) Круто.

2) Для личного удовольствия, которое я получил в процессе написания и созерцания результатов.

3) Для красоты. Парочку моделей можно поставить например на спавне. И тогда у него будет две ипостаси - обычная и виртуальная, не видимая без очков. )

4) Круто.

  • Like 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кодят в первую очередь для удовольствия)

Не могу не согласиться)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

извините, я два дня как изучаю данный мод. подскажите пожалуйста как запустить программу? пошагово если не трудно. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

извините, я два дня как изучаю данный мод. подскажите пожалуйста как запустить программу? пошагово если не трудно. 

 

Сингл или сервер? Есть ли доступ к сейву мира? Это важно, потому что от этого зависит как ты будешь загружать файл с моделью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

сингл естественно)


в общем модель я загрузил, ввел pastebin get JyK7KTCQ obj (где obj я ввел просто так, как бы свое название программы) и все...дальше не знаю что делать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну тогда все немного проще.

 

1) (Желательно. Чтобы модели не моргали) Редактируешь конфиг мода OpenGlasses. Снизь энергопотребление и повысь объем буфера.

2) Скопируй модель OBJ на жесткий твоего компьютера.

3) Скопируй, или скачай мою библиотеку (команда pastebin get JyK7KTCQ obj.lua, если есть интернет-плата)

4) Напиши свою программу. Для теста возьми пример из первого поста, только замени в нем название файла.

5) Все сохрани, и запусти свою программку-тест.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Свои программы мне писать еще долеко...я даже lua толком не знаю

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

когда запускаю obj.lua ничего не происходит (вообще)

а когда запускаю это(я изменил wolf,obj на cat,obj короче свою модель и закинул я ее в world/opencomputers/мой ж.диск) то консоль исчезает и появляется какой то чат что ли...незнаю что это, когда пишу что нибудь(любое сообщение) то оно дублируется 

 

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 ничего не происходит (вообще)

а когда запускаю это(я изменил wolf,obj на cat,obj короче свою модель и закинул я ее в world/opencomputers/мой ж.диск) то консоль исчезает и появляется какой то чат что ли...незнаю что это, когда пишу что нибудь(любое сообщение) то оно дублируется 

 

Саму библиотеку (obj.lua) запускать и не надо. Ее надо использовать через программу.

 

Ты наверное не прилинковал очки. Очки из мода OpenGlasses кликнуть ПКМ по терминалу очков (блок такой, с зеленым узором). А потом надеть, вместо шлема.

 

Из программы убери строку setScale(0.01). Модель волка у меня была очень большой. 

Строку setPosition тоже можно убрать.

Когда запускается программа, там ничего нажимать не надо. Просто жди, и смотри где-то возле блока-терминала очков. Должна начать отрисовываться модель.

Когда дорисуется, на компьютере появится сообщение про число вокселей и полигонов.

Изменено пользователем Totoro

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

что я только не сделал... и очки включил и комп перезагрузил...может что то не так делаю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

что я только не сделал... и очки включил и комп перезагрузил...может что то не так делаю...

 

Я сделал все, что было в моих силах, и более не властен над твоей судьбой. Теперь тебе може помочь только Он. Я скрещу за тебя пальцы. Аминь.

Изменено пользователем Totoro
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я сделал все, что было в моих силах, и более не властен над твоей судьбой. Теперь тебе може помочь только Он. Я скрещу за тебя пальцы. Аминь.

:D может у меня модель слишком кривая? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как окозалось все прекрасно работало только вот 1 нюанс... в майне лупы нет =_= зачем мне нанокошка

6db576d284af.png

  • Like 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как окозалось все прекрасно работало только вот 1 нюанс... в майне лупы нет =_= зачем мне нанокошка

6db576d284af.png

:smile3: Выглядит здорово))

  • Like 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как окозалось все прекрасно работало только вот 1 нюанс... в майне лупы нет =_= зачем мне нанокошка

 

:D Конечно же ловить наномышей!

Изменено пользователем Totoro
  • Like 6

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Интересно а можно было бы сделать так что бы модели имели разные цвета а не залитые сплошными 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хотелось бы...кстати большие модели не отрисовываются пишет нет памяти... 4 по 3.5 установил все равно не хватает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хотелось бы...кстати большие модели не отрисовываются пишет нет памяти... 4 по 3.5 установил все равно не хватает

 

Программа загружает в память информацию о всех вершинах и полигонах. В принципе можно оптимизировать, выкинув лишние таблицы, но это не сильно увеличит размер модели.

 

Что касается раскраски, тут все не просто. Текстуры реализовать не выйдет, в силу технических причин.

Можно сделать окраску различных частей модели в разный цвет, при условии, что эти части представляют собой отдельные меши в самой модели. В принципе.

Ну и наконец, можно реализовать что-то вроде фейкового "самозатенения" по полигонам. (Смотреться будет немного "угловато" =) Примерно так: http://i.stack.imgur.com/o90EZ.png только треугольники вместо квадратов) И повысит расход оперативной памяти и время загрузки модели.

Изменено пользователем Totoro

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я не совсем понял, как загружать модели?

 

Тебе надо залить файлик obj на жесткий OC-компьютера.

 

Если у тебя есть доступ к сейву - просто поищи папку с диском и скопируй файл туда.

Если ты играешь на сервере и доступа к сейву мира нет - залей модельку куда-нибудь в интернет, получи на нее прямую ссылку и скачай на OC-компьютер командой wget.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тебе надо залить файлик obj на жесткий OC-компьютера.

 

Если у тебя есть доступ к сейву - просто поищи папку с диском и скопируй файл туда.

Если ты играешь на сервере и доступа к сейву мира нет - залей модельку куда-нибудь в интернет, получи на нее прямую ссылку и скачай на OC-компьютер командой wget.

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почти удалось сделать вертексное текстурирование(ну, в данном случае полигональное), но треугольники просвечивают если созданы позже тех, что перед ними :( Можно чисто теоретически отключать невидимые полигоны, но вот насчет производительности такой штуки остаются вопросы.

Любезно сп****в позаимствовав у разрабов MineOS библиотечку по чтению PNG, получилось нечто такое:
 

kJf6rTfIT4E.jpg

 

Карта текстур (у меня "палитра"):
Yy_qmtD6UJ4.jpg

 

P.S. насчет нехватки энергии, дело решается множественным втыкиванием аккумуляторов в округе, и соответственно зарядке их от нескольких источников.

P.S.S. как менять размер изображения? :smile14:

 

Чуть не забыл, если кому интересно, вот код: 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)
Изменено пользователем Xytabich
  • Like 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У разрабов MineOS ты ничего не воровал. Та либа написана вообще не им. Как и другие две.

 

Но результат зато красивый :)

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Совсем забыл добавить описание, ну теперь есть оно :D

 

 

 

У разрабов MineOS ты ничего не воровал. Та либа написана вообще не им. Как и другие две.

 

Не знаю к сожалению, как называть тех кто создал, по этому как проще так и описал))

Изменено пользователем Xytabich

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×