forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Проблемы LoadAnimMesh (http://forum.boolean.name/showthread.php?t=8076)

ELIAS 29.03.2009 00:30

Проблемы LoadAnimMesh
 
У ентитей загруженных LoadAnimMesh`ом нельзя поменять цвет, текстуру. К ним неприминимы команды paintmesh, entitytextire, entitycolor !!!! :(. И кстати ещё чего то ограничивает LoadAnimMesh, я не помню только:( Вот с LoadMesh - всё работает нормально!!!

Впопрос: почему так происходит и как от этого избавиться????

Я просто-напросто хочу сделать в игре бабочку - ну и естественно в максе сделала две планки а аинимировал их. Но текстура то с альфа-каналом!!! Её необходимо в самом блитце накладывать!!! А тут такое! На анимированную бабочку текстура не лезет никаким способом...:((((:''(( :''(( :''((

:SOS: помогите!
спасибо заранее

SBJoker 29.03.2009 00:35

Ответ: Проблемы LoadAnimMesh
 
гы-гы RTFM!!!

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

А ты применяешь к пивоту к которому они все привязаны.

ABTOMAT 29.03.2009 01:51

Ответ: Проблемы LoadAnimMesh
 
FindChild
GetChild

=> GoTo Help

HolyDel 29.03.2009 11:40

Ответ: Проблемы LoadAnimMesh
 
Рекурсией самое то.
Код:

function animentitycolor(ent,r,g,b)
entitycolor ent,r,g,b
for i=1 to CountChildrens(ent)
animentitycolor(GetChild(ent,1),r,g,b)
next
end function

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

ELIAS 29.03.2009 12:34

Ответ: Проблемы LoadAnimMesh
 
а чем хуже не рекурсией, а обыкновенно???

function animentitycolor(ent,r,g,b)
for i=1 to CountChildrens(ent)
entitycolor(GetChild(ent,i),r,g,b)
next
end function


И ещё вопросы по анимации... Вот как мне менять скорость анимации у ентити??? Напримпер для синхронизации скорости анимации с фпс`ом??? Надо чтобы анимаация не останавливалась - а шла равномерно, но меняя свою скорость...

ЗЫ!!! А ещё, никто не знает функцию генерирования яркого и сочного цвета рандомомом???

HolyDel 29.03.2009 12:51

Ответ: Проблемы LoadAnimMesh
 
Цитата:

а чем хуже не рекурсией, а обыкновенно???
тем, что если у детей будут свои дети, то твой вариант работать не будет. а мой будет.

SBJoker 29.03.2009 14:47

Ответ: Проблемы LoadAnimMesh
 
Цитата:

Сообщение от ELIAS (Сообщение 102097)
Вот как мне менять скорость анимации у ентити??? Напримпер для синхронизации скорости анимации с фпс`ом??? Надо чтобы анимаация не останавливалась - а шла равномерно, но меняя свою скорость...

RTFM!!!

Специально для этого в функции UpdateWorld( tween# ) есть необязательный параметр tween# который и являет собой скорость анимации по отношению к нормальной. Т.е. если игра идёт в 2 раза быстрее то анимация должна идти в 2раза медленее значит tween=1/2=0.5 или tween=target_fps/current_fps

HolyDel 30.03.2009 01:14

Ответ: Проблемы LoadAnimMesh
 
Цитата:

ЗЫ!!! А ещё, никто не знает функцию генерирования яркого и сочного цвета рандомомом???
очевидно надо генерировать цвет в hsl.
и его уже преобразовывать в rgb.
http://www.geekymonkey.com/Programmi...SL_HSL2RGB.htm
http://www.tecgraf.puc-rio.br/~mgatt...r/RGBtoHSL.htm

http://discussion.forum.nokia.com/fo...ad.php?t=78382
4-e сообщение

и вот, наверное самое полезное:
http://130.113.54.154/~monger/hsl-rgb.html

IGR 30.03.2009 13:45

Ответ: Проблемы LoadAnimMesh
 
Цитата:

function animentitycolor(ent,r,g,b)
entitycolor ent,r,g,b
for i=1 to CountChildrens(ent)
animentitycolor(GetChild(ent,1),r,g,b)
next
end function
там еще была функция animentitytexture, что бы текстурить аним модель !! так вот компилятор выдает ошибку "animentity is not model" !! с чем это может быть связяно ?? експорт с макса пиплайном, кости есть !!

HolyDel 30.03.2009 14:12

Ответ: Проблемы LoadAnimMesh
 
ну проверяй класс entity. чтобы "mesh" был.
entityclass чтоли.

ABTOMAT 30.03.2009 14:43

Ответ: Проблемы LoadAnimMesh
 
Цитата:

entityclass
Нет такого

HolyDel 30.03.2009 14:52

Ответ: Проблемы LoadAnimMesh
 
Код:

Graphics3D 800,600,32,2
AppTitle "","are you sure"
cam = CreateCamera()

Print EntityClass(cam)


a = CreateMesh()
Print EntityClass(a)

b = CreateSprite()
Print EntityClass(b)

c = CreateTerrain(32)
Print EntityClass(c)

d = CreateLight()
Print EntityClass(d)

e = CreatePivot()
Print EntityClass(e)

WaitKey


IGR 30.03.2009 14:59

Ответ: Проблемы LoadAnimMesh
 
Цитата:

ну проверяй класс entity. чтобы "mesh" был.
HolyDel, конечно проверел !! конечно - mesh !!

ABTOMAT 30.03.2009 15:03

Ответ: Проблемы LoadAnimMesh
 
Странно, в хелпе нет по этому поводу
Правка: ан нет, в онлайн хелпе есть

IGR 30.03.2009 15:04

Ответ: Проблемы LoadAnimMesh
 
Цитата:

Странно, в хелпе нет по этому поводу
по ходу недокументированая команда !! ...Handle, Object !!

HolyDel 30.03.2009 15:07

Ответ: Проблемы LoadAnimMesh
 
Цитата:

Странно, в хелпе нет по этому поводу
в истории изменения версий есть. а насчет справки - там много чего нету.

Цитата:

HolyDel, конечно проверел !! конечно - mesh !!
я тебе не верю :) код покажи.

ABTOMAT 30.03.2009 15:10

Ответ: Проблемы LoadAnimMesh
 
Вложений: 1
Хм, меня заинтересовала эта хрень :-)
Вот в аттаче работающий пример.
Поначалу сбило с толку то, что дурень Марк сделал возвращаемый параметр ф-ии EntityClass строчкой, вместо чеовеческих Интов. FFFFFFUUUUU

Tadeus 31.03.2009 00:51

Ответ: Проблемы LoadAnimMesh
 
В хелпе версии 1.88 это всё есть

impersonalis 31.03.2009 01:26

Ответ: Проблемы LoadAnimMesh
 
EntityClass$( entity )
Parameters
Цитата:

entity - a valid entity handle
Description
Цитата:

Returns a string containing the class of the specified entity.

Possible return values are:

Pivot
Light
Camera
Mirror
Listener
Sprite
Terrain
Plane
Mesh
MD2
BSP

Note that the command will fail if a valid entity handle is not supplied, and will not just return an empty string.
Example
Цитата:

; EntityClass Example
; -------------------

Graphics3D 640,480,16
SetBuffer BackBuffer()

SeedRnd MilliSecs()

; Select a random number between 0 and 7 then create a certain class of entity depending on the number selected
i=Rand(0,7)
Select i
Case 0 ent=CreatePivot()
Case 1 ent=CreateLight()
Case 2 ent=CreateCamera()
Case 3 ent=CreateMirror()
Case 4 ent=CreateSprite()
Case 5 ent=CreateTerrain(32)
Case 6 ent=CreatePlane()
Case 7 ent=CreateMesh()
;Case 8 ent=CreateListener(parent)
;Case 9 ent=LoadMD2(md2_file$)
;Case 10 ent=LoadBSP(bsp_file$)
End Select

; Get the class of the entity
class$=EntityClass$(ent)

; Output the class to the screen
Text 0,0,"A "+class$+" was created."

Text 0,20,"Press a key."

WaitKey()

End
хелп 1.88

impersonalis 31.03.2009 01:30

Ответ: Проблемы LoadAnimMesh
 
аномалия какая-то: за последние недели друг-другу нарассказывали столько очевидных вещей из хелпа. Наверно, перемудрили

HolyDel 31.03.2009 01:31

Ответ: Проблемы LoadAnimMesh
 
impersonalis, ага. весна наверно.

IGR 31.03.2009 15:46

Ответ: Проблемы LoadAnimMesh
 
Вложений: 1
Цитата:

я тебе не верю код покажи.
вооще-то уже разобрался !! спасибо !! :)
просто я брал фукцию (AnimEntityTexture) с сорсов ВарТича !!
в коде АВТОМАТА немного другая ф-ция (AnimEntityTexture_NEW) - она работает !!
в атаче код с медией, если будет время - глянь !! у меня 1 ф-ция работает вторая нет !!
Код:

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

cam = CreateCamera()
        CameraClsColor cam,64,64,64
        PositionEntity cam,0,150,-200

bot = LoadAnimMesh("1.b3d")
        bot_anim = LoadAnimSeq(bot, "anim_walk.b3d")
        MoveEntity bot,0,-30,100
        Animate bot,1,1,bot_anim

;        загружаем текстуру-маску
                m_tex = LoadTexture("man_MM.jpg",4)
;        загружаем диффуз-текстуру с кровью
                d_tex_blood = LoadTexture("man_blood_DM.jpg",1)

;                Работает !!
        AnimEntityTexture_NEW(bot,m_tex,0,0);
        AnimEntityTexture_NEW(bot,d_tex_blood,0,1)

;                Почему-то НЕ работает !!
;        AnimEntityTexture(bot,m_tex,0,0)
;        AnimEntityTexture(bot,d_tex_blood,0,1)

Repeat
        TurnEntity bot,0,0.3,0
RenderWorld()
UpdateWorld()
        Text 10,10, EntityClass(bot)
Flip
Until KeyHit(1)
End


Function AnimEntityTexture_NEW(ent, tex,flag=0,level=0)
        If EntityClass(ent) = "Mesh" Then
                EntityTexture ent,tex,0,level
        End If
        For i=1 To CountChildren(ent)
                AnimEntityTexture_NEW(GetChild(ent,i),tex,0,level)
        Next
End Function

Function AnimEntityTexture(aent,tex,frame=0,layer=0)
Local ent
EntityTexture aent,tex,frame,layer
For c=1 To CountChildren(aent)
        ent=GetChild(aent,c)
        If CountChildren(ent)>0
        AnimEntityTexture(ent,tex,frame,layer)
        Else
        If EntityClass(ent)="Mesh" Then EntityTexture ent,tex,frame,layer
        EndIf
Next
End Function


ABTOMAT 31.03.2009 16:59

Ответ: Проблемы LoadAnimMesh
 
Вечером отпишусь, щас убегаю


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot