Сохранен 31
https://2ch.hk/gd/res/507845.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

LÖVE thread: NOW IN 3D!

 Аноним OP 28/06/18 Чтв 06:30:08 #1 №507845 
hbmzruswzl6kxefu6mcnlxbfl8.png
Ненашел@Создал

Кто там пробовал 3дэ которое в 11й версии упростили? Кто шейдеры писать пробовал? Вышло у кого?

Тем временем я вспоминаю математику и пилю софтварный рендер.

Крутить хернюшку стрелочками и , . в англ раскладке
Собственно хернюшка Аноним 28/06/18 Чтв 06:31:10 #2 №507846 
function love.load()
local Object = {}
Object.__index = Object


function Object:new()
end


function Object:extend()
local cls = {}
for k, v in pairs(self) do
if k:find("__") == 1 then
cls[k] = v
end
end
cls.__index = cls
cls.super = self
setmetatable(cls, self)
return cls
end


function Object:implement(...)
for _, cls in pairs({...}) do
for k, v in pairs(cls) do
if self[k] == nil and type(v) == "function" then
self[k] = v
end
end
end
end


function Object:is(T)
local mt = getmetatable(self)
while mt do
if mt == T then
return true
end
mt = getmetatable(mt)
end
return false
end


function Object:__tostring()
return "Object"
end


function Object:__call(...)
local obj = setmetatable({}, self)
obj:new(...)
return obj
end


class = Object
vec3 = class:extend()

function vec3:new(x, y, z)
self.x = x or 0
self.y = y or 0
self.z = z or 0
end

function vec3:p()
print(self.x, self.y, self.z)
end

function vec3:__unm(a)
local x = -a.x
local y = -a.y
local z = -a.z
return vec3(x, y, z)
end

function vec3:__add(a)
local x = self.x + a.x
local y = self.y + a.y
local z = self.z + a.z
return vec3(x, y, z)
end

function vec3:__sub(a)
local x = self.x - a.x
local y = self.y - a.y
local z = self.z - a.z
return vec3(x, y, z)
end

function vec3:__pow(a)
local x = self.y a.z - self.z a.y
local y = self.z a.x - self.x a.z
local z = self.x a.y - self.y a.x
return vec3(x, y, z)
end

function vec3:__div(a)
local x = self.x / a
local y = self.y / a
local z = self.z / a
return vec3(x, y, z)
end

function vec3:len()
return math.sqrt(self.x ^ 2 + self.y ^ 2 + self.z ^ 2)
end

function vec3:unit()
return self / self:len()
end
mat4 = class:extend()

function mat4:new(a)
if a then
self[1] = {unpack(a[1])}
self[2] = {unpack(a[2])}
self[3] = {unpack(a[3])}
self[4] = {unpack(a[4])}
else
self[1] = {1, 0, 0, 0}
self[2] = {0, 1, 0, 0}
self[3] = {0, 0, 1, 0}
self[4] = {0, 0, 0, 1}
end
end

function mat4:__mul(a)
if a:is(mat4) then
local c = {{}, {}, {}, {}}
for i = 1, 4 do
for j = 1, 4 do
local d = 0
for k = 1, 4 do
d = d + a[k] self[k][j]
end
c[j] = d
end
end
return mat4(c)
elseif a:is(vec3) then
local x, y, z, f
x = self[1][1]
a.x + self[1][2] a.y + self[1][3] a.z + self[1][4] 1
y = self[2][1]
a.x + self[2][2] a.y + self[2][3] a.z + self[2][4] 1
z = self[3][1]
a.x + self[3][2] a.y + self[3][3] a.z + self[3][4] 1
f = 1 - z / camera
x = x / f
y = y / f
z = z / f
return vec3(x, y, z)
end
end

function mat4:__add(a)
local c = {{}, {}, {}, {}}
for i = 1, 4 do
for j = 1, 4 do
c[j] = self[j] + a[j]
end
end
return mat4(c)
end

function mat4:__sub(a, b)
local c = {{}, {}, {}, {}}
for i = 1, 4 do
for j = 1, 4 do
c[j] = self[j] - a[j]
end
end
return mat4(c)
end

function mat4:rt(x, y, z)
local cosa, sina
local mx = mat4()
cosa = math.cos(x)
sina = math.sin(x)
mx[2] = {0, cosa, -sina, 0}
mx[3] = {0, sina, cosa, 0}
local my = mat4()
cosa = math.cos(y)
sina = math.sin(y)
my[1] = {cosa, 0, sina, 0}
my[3] = {-sina, 0, cosa, 0}
local mz = mat4()
cosa = math.cos(z)
sina = math.sin(z)
mz[1] = {cosa, -sina, 0, 0}
mz[2] = {sina, cosa, 0, 0}
local m = mx
my mz
return m
end

function mat4:sc(x, y, z)
local m = mat4()
m[1][1] = x
m[2][2] = y
m[3][3] = z
return m
end

function mat4:tr(x, y, z)
local m = mat4()
m[1][4] = x
m[2][4] = y
m[3][4] = z
return m
end

function mat4:p()
print(unpack(self[1]))
print(unpack(self[2]))
print(unpack(self[3]))
print(unpack(self[4]))
end
poly = class:extend()

function poly:new(a,b,c)
self[1]=a
self[2]=b
self[3]=c
end

function poly:normal()
local norm = ((self[1] - self[2]) ^ (self[3] - self[2])):unit() + self[2]
love.graphics.setColor(1,0,0,1)
love.graphics.line(25
self[2].x+100, 25self[2].y+75, 25norm.x+100, 25norm.y+75)
love.graphics.setColor(1,1,1,1)
--return norm
end
camera = 1000
points = {
vec3(-1, -1, -1),
vec3(1, -1, -1),
vec3(-1, 1, -1),
vec3(1, 1, -1),
vec3(-1, -1, 1),
vec3(1, -1, 1),
vec3(-1, 1, 1),
vec3(1, 1, 1)
}
pnew = {}
rx = 0
ry = 0
rz = 0
canvas = love.graphics.newCanvas(200,150)
end

function love.update(dt)
if love.keyboard.isDown("up") then
rz = rz + dt
elseif love.keyboard.isDown("down") then
rz = rz - dt
end
if love.keyboard.isDown("right") then
ry = ry + dt
elseif love.keyboard.isDown("left") then
ry = ry - dt
end
if love.keyboard.isDown(",") then
rx = rx + dt
elseif love.keyboard.isDown(".") then
rx = rx - dt
end
local rotate = mat4:rt(rx, ry, rz)
for i = 1, 8 do
pnew = rotate
points
end
end

function love.draw()
love.graphics.setCanvas( canvas )
love.graphics.clear()
love.graphics.setLineStyle('rough')
for i = 1, 7 do
love.graphics.line(25pnew.x + 100, 25pnew.y+75, 25pnew[i + 1].x + 100, 25pnew[i + 1].y+75)

end
y = poly(pnew[1],pnew[2],pnew[3])
y:normal()
love.graphics.setCanvas()
love.graphics.draw(canvas,0,0,0,4,4)

end
Аноним OP 28/06/18 Чтв 06:39:34 #3 №507848 
>>507846
Пидораший двощ, сука, итераторы сожрал...

Короче вот
https://dropmefiles.com/Wy43J
https://dropmefiles.com/Wy43J
https://dropmefiles.com/Wy43J
https://dropmefiles.com/Wy43J
Аноним 28/06/18 Чтв 11:11:20 #4 №507880 
Омерзительный язык. Какая-то каша из говна вместо скрипта. Нахуй это всё? Это ты сам написал или это кусок исходника движка?
Аноним 28/06/18 Чтв 11:35:33 #5 №507892 
1530174907.png
>>507848
Ололо!
Аноним 28/06/18 Чтв 12:10:21 #6 №507904 
>>507848
На пастбин какой-нибудь закинь.
Аноним 28/06/18 Чтв 14:43:53 #7 №507926 
>>507892
>>507904
Выглядит как говно, ибо я субмодули копипастил, чтоб в один файл все слить.

https://pastebin.com/hnWFHqqS
Аноним 28/06/18 Чтв 15:16:45 #8 №507936 
image.png
image.png
image.png
>>507926
Лул, что происходит?
Аноним 28/06/18 Чтв 15:20:26 #9 №507938 
>>507936
T = 0
function love.update(dt)
  T = T + dt
  rz = math.sin(T)
  ry = math.cos(T)
  rx = math.sin(T+math.pi/4)
  ...
Такое в апдейт добавить, вообще наркомания начинается, можно залипать.
Аноним 28/06/18 Чтв 17:44:22 #10 №507983 
>>507936
>что происходит?
Происходит проекция ломаной линии построенной на вершинах куба на плоскость. Плюс проецируется нормаль к плоскости вершин 1-2-3 (красная)
Аноним OP 29/06/18 Птн 14:21:49 #11 №508144 
Screenshot from 2018-06-29 14-20-10.png
ОП-хуй на связи
Зойлил говняшку на гейхаб
Зойпилил треугольники
Может лучше квады?
>>https://github.com/timdorohin/3DTest
Аноним 29/06/18 Птн 15:08:29 #12 №508150 
>>508144
Лучше запили класс для моделек, чтобы не было пердолева с отрисовкой. И можно будет затестить скока ФПС выдает.
Аноним 29/06/18 Птн 15:10:27 #13 №508153 
>>508150
Думаю прикрутить импорт wavefront obj
Аноним 29/06/18 Птн 15:20:00 #14 №508155 
Кстати, чтобы тру-пиксели рисовать, при инициализации можно добавить canvas:setFilter('nearest', 'nearest')
Аноним 29/06/18 Птн 15:21:25 #15 №508156 
>>508155
Моя не хотеть так делать, моя потом нойз-шейдер телевизер-стайл прикрутит.
Аноним 03/07/18 Втр 14:53:14 #16 №509083 
как делать 3д в новом лове?
Аноним 04/07/18 Срд 17:03:10 #17 №509564 
>>509083
Ш Е Й Д Е Р Ы
Е
Й
Д
Е
Р
Ы
Аноним 04/07/18 Срд 17:18:40 #18 №509569 
Это возрождение opengl треда с пердоллингом, только в этот раз уже полумертвый LÖVE?
Аноним 04/07/18 Срд 21:48:59 #19 №509654 
>>509569
На самом деле нет. Энто я в софтварный рендерер в 20!8 играюсь.
Аноним 15/08/18 Срд 21:40:43 #20 №522818 
бамп
Аноним 16/08/18 Чтв 13:37:57 #21 №522903 
>>522818
ОП-хуй сдох и не оживает.
На самом деле нет, но пытаться в рейтрейсер в GLSL это то же самое.
Аноним 06/09/18 Чтв 13:47:47 #22 №525915 
Можете накидать годной документации и обучалок
Аноним 06/09/18 Чтв 15:00:47 #23 №525925 
Помню, пытался что-нибудь создать на этом движке года 2 назад. Тогда о 3д на лавэ никто ничего слышал. Не ожидал, что кто-то возьмется за него.
Аноним 01/11/18 Чтв 12:37:09 #24 №534925 
>>534890
А?
Аноним 01/11/18 Чтв 21:52:53 #25 №535037 
INSTALL PHASER
Аноним 02/11/18 Птн 02:51:18 #26 №535060 
>>534925
https://www.youtube.com/watch?v=-iJHt8jy2rs
Аноним 29/04/19 Пнд 09:10:21 #27 №577132 
Анончики. Решил попробоваьт love2d.
Под него есть какая-нибудь IDE ? Чтобы хоть какой-то дебаг был, проверка синтаксиса и прочая хуйня. А то как-то невесело постоянно править текстовые файлы, а потом запускать их туда-сюда.
Аноним 29/04/19 Пнд 09:44:32 #28 №577136 
>>577132
>А то как-то невесело постоянно править текстовые файлы, а потом запускать их туда-сюда
Ну так переходи на нормальный движок Unity3D. Или не ной.
Аноним 29/04/19 Пнд 10:30:23 #29 №577145 
>>577132
notepad++, sublime, atom, zerobrane - для всех есть луа плагины, можно настроить, чтобы из редактора по одной кнопке был запуск проекта.
zerobrane поддерживает дебаггинг, хотя мне принтов в нотпаде хватает.
Аноним 03/05/19 Птн 01:52:05 #30 №578105 
>>507845 (OP)
Аноним 10/05/19 Птн 16:18:00 #31 №579737 
>>579736
comments powered by Disqus