Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 16.07.2010, 20:32   #1
DeeJex
Разработчик
 
Аватар для DeeJex
 
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений
(для 329 пользователей)
фиксим BodyCreateHull

где-то слышал кто-то жаловался, что загружая из макса хуллы не учитывается скалирование
самый очевидный фикс:
Function BodyCreateHull%(mesh%, mass#)

    Local nsurf = CountSurfaces(mesh)
    Local nvert = 0
    For ns = 1 To nsurf
        Local surf = GetSurface(mesh,ns)
        nvert = nvert + CountVertices(surf)
    Next
         vbank = CreateBank(nvert*4*3)
    nv = 0
    For ns = 1 To nsurf
        surf = GetSurface(mesh,ns)
        nvv = CountVertices(surf)
        For nvc = 0 To nvv - 1
             PokeFloat vbank,nv*12+0,VertexX(surf,nvc)*MeshWidth(mesh)
             PokeFloat vbank,nv*12+4,VertexY(surf,nvc)*MeshHeight(mesh)
             PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)*MeshDepth(mesh)
            nv = nv+1
        Next
    Next
    Local bbb%= pxBodyCreateHull(vbank, nvert, mass)
    FreeBank vbank
    Return bbb
End Function
на теории - логично, в деле - ATMTA.
что-то тут не так, что именно никак не могу понять. возможно, координаты самого интити.
__________________
299 792 458
(Offline)
 
Ответить с цитированием
Старый 16.07.2010, 20:51   #2
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: фиксим BodyCreateHull

PokeFloat vbank,nv*12+0,VertexX(surf,nvc)*MeshWidth(mesh)
PokeFloat vbank,nv*12+4,VertexY(surf,nvc)*MeshHeight(mesh)
PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)*MeshDepth(mesh)
\me упал под стол.
Кто-то так говорил, что он может реализовать всякие крутые фишки легко, да?
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Knightmare за это полезное сообщение:
Dream (16.07.2010), Taugeshtu (17.07.2010), tormoz (16.07.2010)
Старый 16.07.2010, 23:10   #3
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: фиксим BodyCreateHull

Вылаживался же вроде рабочий фикс, нет?
MeshWidth и иже с ними возвращают абсолютные габариты меша, а нам нужно узнать его скейл. Такая возможность в Б3Д не предусмотрена, можно вытащить их при помощи либы B3D+, либо был способ сделать без либ, получив значения ентити, но на память не скажу, как. Было всё на форуме, ищите.
/thread
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 17.07.2010, 07:19   #4
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: фиксим BodyCreateHull

GetMatElement( entity, row, column )
Вы про это чтоли?

Function EntityScaleX#(ent%) 
    
row=0
    el1
# = GetMatElement(ent,row,0) 
    
el2# = GetMatElement(ent,row,1) 
    
el3# = GetMatElement(ent,row,2) 
    
Return Sqr(el1*el1+el2*el2+el3*el3
End Function
Function 
EntityScaleY#(ent%) 
    
row=1
    el1
# = GetMatElement(ent,row,0) 
    
el2# = GetMatElement(ent,row,1) 
    
el3# = GetMatElement(ent,row,2) 
    
Return Sqr(el1*el1+el2*el2+el3*el3
End Function
Function 
EntityScaleZ#(ent%) 
    
row=2
    el1
# = GetMatElement(ent,row,0) 
    
el2# = GetMatElement(ent,row,1) 
    
el3# = GetMatElement(ent,row,2) 
    
Return Sqr(el1*el1+el2*el2+el3*el3
End Function 

Сообщение от Arles Посмотреть сообщение
Мне вот интересно, а модераторы, вобще, видят эти сообщения?!
Knightmare, я, конечно, понимаю что тебя многие достали и у многих, знания до твоих не дотягивают, но это не дает тебе права так перегибать палку! И если тебе противно читать темы с подобными вопросами, в которых ты потом собираешься оскорблять топикстартера, то лучше просто не отписывайся, потому что: 1. Вопрос не был задан конкретно тебе. 2. От твоего ответа лучше не стало.
Как всегда играем в "хороший, плохой [s]полицейский[/s] форумчанин."
Knightmare часто перегибает паку. Но чтоб человек начал думать ему нужно и подсказки давать и подзатыльники.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
DeeJex (17.07.2010)
Старый 17.07.2010, 08:32   #5
Arles
ПроЭктировщик
 
Аватар для Arles
 
Регистрация: 24.07.2009
Сообщений: 142
Написано 52 полезных сообщений
(для 103 пользователей)
Ответ: фиксим BodyCreateHull

Да, но только у Knightmare подзатыльники слишком тяжелые, а подсказки слишком поверхностные..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Colossus (25.07.2010)
Старый 17.07.2010, 11:11   #6
DeeJex
Разработчик
 
Аватар для DeeJex
 
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений
(для 329 пользователей)
Ответ: фиксим BodyCreateHull

спс, работает
Function BodyCreateHull%(mesh%, mass#)

    Local nsurf = CountSurfaces(mesh)
    Local nvert = 0
    For ns = 1 To nsurf
        Local surf = GetSurface(mesh,ns)
        nvert = nvert + CountVertices(surf)
    Next
         vbank = CreateBank(nvert*4*3)
    nv = 0
    For ns = 1 To nsurf
        surf = GetSurface(mesh,ns)
        nvv = CountVertices(surf)
        For nvc = 0 To nvv - 1
             PokeFloat vbank,nv*12+0,VertexX(surf,nvc)*EntityScaleX(mesh)  
             PokeFloat vbank,nv*12+4,VertexY(surf,nvc)*EntityScaleY(mesh)  
             PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)*EntityScaleZ(mesh)  
            nv = nv+1
        Next
    Next
    Local bbb%= pxBodyCreateHull(vbank, nvert, mass)
    FreeBank vbank
    Return bbb
End Function

Function EntityScaleX#(ent%)  
    row=0 
    el1# = GetMatElement(ent,row,0)  
    el2# = GetMatElement(ent,row,1)  
    el3# = GetMatElement(ent,row,2)  
    Return Sqr(el1*el1+el2*el2+el3*el3)  
End Function 
Function EntityScaleY#(ent%)  
    row=1 
    el1# = GetMatElement(ent,row,0)  
    el2# = GetMatElement(ent,row,1)  
    el3# = GetMatElement(ent,row,2)  
    Return Sqr(el1*el1+el2*el2+el3*el3)  
End Function 
Function EntityScaleZ#(ent%)  
    row=2 
    el1# = GetMatElement(ent,row,0)  
    el2# = GetMatElement(ent,row,1)  
    el3# = GetMatElement(ent,row,2)  
    Return Sqr(el1*el1+el2*el2+el3*el3)  
End Function
__________________
299 792 458
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 00:50.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com