|
06.11.2013, 18:45
|
#1
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Работа с треугольниками
Возможно ли применять кисть к отдельному треугольнику, а не к всему Surface-у?
__________________
|
(Offline)
|
|
06.11.2013, 19:20
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Работа с треугольниками
Нет, нельзя. Придётся создать отдельный сурфейс.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.11.2013, 19:24
|
#3
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Работа с треугольниками
Тогда какой наименее затратный способ перевести все треугольники объекта в surface-ы?
P.S. Освещение нужно имитировать
__________________
|
(Offline)
|
|
06.11.2013, 19:34
|
#4
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Работа с треугольниками
От такого количества сурфейсов скорость вся загнётся
Может, освещение лучше имитировать как-то иначе? Цветами вершин, например?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.11.2013, 19:52
|
#5
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Работа с треугольниками
А соприкасающиеся треугольники имеют разные vertex-ы?
P.S. Я просто хочу высчитывать нормали каждого треугольника, а потом менять цвет. На соединении граней могут быть лаги.
__________________
|
(Offline)
|
|
06.11.2013, 21:18
|
#6
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Работа с треугольниками
Сообщение от Devilox
А соприкасающиеся треугольники имеют разные vertex-ы?
|
Как сделаешь так и будет.
Ты что-то типа этого хочешь?
Тогда это делается намного проще.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.11.2013, 21:24
|
#7
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Работа с треугольниками
Получилось, спасибо)
Global player
Global cam
Global sphere
Global lamp
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
cam = CreateCamera()
player = CreateSphere()
EntityParent cam,player
piv = CreatePivot()
lamp = CreateSphere()
ScaleEntity lamp,0.1,0.1,0.1
PositionEntity lamp,2,1,-5
sphere = CreateSphere()
PositionEntity sphere,0,0,5
EntityFX sphere,35
While Not KeyHit(1)
CreateLightmap()
If KeyDown(200)
MoveEntity lamp,0,0.1,0
ElseIf KeyDown(208)
MoveEntity lamp,0,-0.1,0
EndIf
If KeyDown(203)
MoveEntity lamp,-0.1,0,0
ElseIf KeyDown(205)
MoveEntity lamp,0.1,0,0
EndIf
TurnEntity cam,MouseYSpeed()/5,0,0
TurnEntity player,0,-MouseXSpeed()/5,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
RotateEntity cam,EntityPitch(cam),0,0,0
If KeyDown(17)
TranslateEntity player,(-0.5 * Cos(EntityPitch(cam))) * Sin(EntityYaw(player)),-0.5 * Sin(EntityPitch(cam)),(0.5 * Cos(EntityPitch(cam))) * Cos(EntityYaw(player))
ElseIf KeyDown(31)
TranslateEntity player,(0.5 * Cos(EntityPitch(cam))) * Sin(EntityYaw(player)),0.5 * Sin(EntityPitch(cam)),(-0.5 * Cos(EntityPitch(cam))) * Cos(EntityYaw(player))
EndIf
If KeyDown(30)
MoveEntity player,-0.5,0,0
ElseIf KeyDown(32)
MoveEntity player,0.5,0,0
EndIf
UpdateWorld()
RenderWorld()
Text 10,10,("Use arrows to move the lamp")
Text 10,20,("Use WASD to move the observer")
Text 10,30,("Free look is available")
Flip
Wend
End
;----------Functions----------;
Function CreateLightmap()
For m = 1 To CountSurfaces(sphere)
surf = GetSurface(sphere,m)
For n = 1 To CountTriangles(surf)
v0 = TriangleVertex(surf,n,0)
v1 = TriangleVertex(surf,n,-1)
v2 = TriangleVertex(surf,n,-2)
v0v1X# = VertexX(surf,v1) - VertexX(surf,v0)
v0v1Y# = VertexY(surf,v1) - VertexY(surf,v0)
v0v1Z# = VertexZ(surf,v1) - VertexZ(surf,v0)
v0v2X# = VertexX(surf,v2) - VertexX(surf,v0)
v0v2Y# = VertexY(surf,v2) - VertexY(surf,v0)
v0v2Z# = VertexZ(surf,v2) - VertexZ(surf,v0)
i# = (v0v1Y * v0v2Z - v0v2Y * v0v1Z)
j# = (v0v1Z * v0v2X - v0v2Z * v0v1X)
k# = (v0v1X * v0v2Y - v0v2X * v0v1Y)
x# = EntityX(lamp) - ((VertexX(surf,v0) + VertexX(surf,v1) + VertexX(surf,v2)) / 3)
y# = EntityY(lamp) - ((VertexY(surf,v0) + VertexY(surf,v1) + VertexY(surf,v2)) / 3)
z# = EntityZ(lamp) - ((VertexZ(surf,v0) + VertexZ(surf,v1) + VertexZ(surf,v2)) / 3)
CosA# = (x * i + y * j + z * k) / (Sqr(x^2 + y^2 + z^2) * Sqr(i^2 + j^2 + k^2))
If CosA >= 0
VertexColor(surf,v0,0,0,0)
VertexColor(surf,v1,0,0,0)
VertexColor(surf,v2,0,0,0)
Else
VertexColor(surf,v0,255 * -CosA,255 * -CosA,255 * -CosA)
VertexColor(surf,v1,255 * -CosA,255 * -CosA,255 * -CosA)
VertexColor(surf,v2,255 * -CosA,255 * -CosA,255 * -CosA)
EndIf
Next
Next
End Function
__________________
|
(Offline)
|
|
06.11.2013, 21:25
|
#8
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Работа с треугольниками
Только вот созданный exe-шник не открывается: пишет MAV...
Памяти должно хватать..
P.S. мб, вычисления библиотекой делать?
__________________
|
(Offline)
|
|
06.11.2013, 22:43
|
#9
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Работа с треугольниками
Блин, зачем я матрицы вычислял... В blitz-е уже всё есть
Function CreateLightmap()
For m = 1 To CountSurfaces(sphere)
surf = GetSurface(sphere,m)
For n = 1 To CountVertices(surf)
i# = VertexNX(surf,n)
j# = VertexNY(surf,n)
k# = VertexNZ(surf,n)
x# = EntityX(lamp) - VertexX(surf,n)
y# = EntityY(lamp) - VertexY(surf,n)
z# = EntityZ(lamp) - VertexZ(surf,n)
CosA# = (x * i + y * j + z * k) / (Sqr(x^2 + y^2 + z^2) * Sqr(i^2 + j^2 + k^2))
If CosA <= 0
VertexColor(surf,n,0,0,0)
Else
VertexColor(surf,n,255 * CosA,255 * CosA,255 * CosA)
EndIf
Next
Next
End Function
Только вот при использовании максовских моделек появляются вывернутые наизнанку вертексы
Да и вообще стало неправильно работать, матрицы считать лучше, но MAV часто вылетает
__________________
|
(Offline)
|
|
07.11.2013, 08:52
|
#10
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Работа с треугольниками
Похоже, что проверка нормалей - плохая затея. Может, кто знает другие алгоритмы реализации освещения?
__________________
|
(Offline)
|
|
07.11.2013, 17:23
|
#11
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Ответ: Работа с треугольниками
А чем не устроило CreateLight()?
|
(Offline)
|
|
07.11.2013, 17:38
|
#12
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Работа с треугольниками
Нет затемнения неосвещённых частей
__________________
|
(Offline)
|
|
07.11.2013, 17:45
|
#13
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Ответ: Работа с треугольниками
За затемнения отвечает AmbientLight()
Или ты про отбрасывание теней?
|
(Offline)
|
|
07.11.2013, 17:52
|
#14
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Работа с треугольниками
Тени тоже
__________________
|
(Offline)
|
|
07.11.2013, 18:07
|
#15
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Ответ: Работа с треугольниками
Самый ок способ освещения в бляце - лайтмапы. Всё остальное фуфел.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо ARA за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:01.
|