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

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

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

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

Ответ
 
Опции темы
Старый 21.01.2007, 23:27   #1
battou
Нуждающийся
 
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений
(для 3 пользователей)
поддерживается ли MD3?

А этот формат вообще поддерживается Blitz'ом?? Если нет, то может используя какие-то либы его можно юзать?
(Offline)
 
Ответить с цитированием
Старый 22.01.2007, 01:55   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: поддерживается ли MD3?

встроенной поддержки нет (как md2 например). Насчет либ инфы нет. Попробуй поискать конвертор.
(Offline)
 
Ответить с цитированием
Старый 22.01.2007, 02:28   #3
Черный крыс
 
Сообщений: n/a
Re: поддерживается ли MD3?

Загрузчик есть и целых два! с Анимацией! =)
Но есть одно но....средняя модель грузиться секунд 40-50....=(
 
Ответить с цитированием
Старый 22.01.2007, 02:37   #4
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: поддерживается ли MD3?

Diablo1909, ссылку дай.
(Offline)
 
Ответить с цитированием
Старый 22.01.2007, 02:43   #5
Черный крыс
 
Сообщений: n/a
Re: поддерживается ли MD3?

Const MD3_MAXFRAMES=300
Type md3_animvertex
Field root,vert,surf,x#[MD3_MAXFRAMES],y#[MD3_MAXFRAMES],z#[MD3_MAXFRAMES]
End Type
Type md3_animtag
Field root,tag,framevalid[MD3_MAXFRAMES],tagindex,pitch#[MD3_MAXFRAMES],yaw#[MD3_MAXFRAMES],roll#[MD3_MAXFRAMES],x#[MD3_MAXFRAMES],y#[MD3_MAXFRAMES],z#[MD3_MAXFRAMES]
End Type
;Load a Quake 3 .md3 model
Function LoadMD3(file$,animated=True,skin$="default")
f=ReadFile(file)
If Not f Return
id$=ReadFixedString(f,4)
version=ReadInt(f)
If Lower(Right(skin,5))<>".skin" skin=skin+".skin"
If Instr(Lower(file),"lower") skin="lower_"+skin
If Instr(Lower(file),"upper") skin="upper_"+skin
If Instr(Lower(file),"head") skin="head_"+skin
skinfile=ReadFile(FileDir(file)+skin)
root=CreateMesh()
name$=ReadFixedString(f,64)
flags=ReadInt(f)
numFrames=ReadInt(f)
numTags=ReadInt(f)
numSurfaces=ReadInt(f)
numSkins=ReadInt(f)
offsetFrames=ReadInt(f)
offsetTags=ReadInt(f)
offsetSurfaces=ReadInt(f)
offsetEnd=ReadInt(f)
SeekFile f,offsetFrames
For frame=1 To numFrames
minx#=ReadFloat(f)
miny#=ReadFloat(f)
minz#=ReadFloat(f)
maxx#=ReadFloat(f)
maxy#=ReadFloat(f)
maxz#=ReadFloat(f) 
x#=ReadFloat(f)
y#=ReadFloat(f)
z#=ReadFloat(f)
radius#=ReadFloat(f)
name$=ReadFixedString(f,16)

Next
SeekFile f,offsetTags
For frame=1 To numFrames
For t=1 To numTags
name$=ReadFixedString(f,64)
x#=ReadFloat(f)
z#=ReadFloat(f)
y#=ReadFloat(f)
Ax#=ReadFloat(f)
Az#=ReadFloat(f)
Ay#=ReadFloat(f)
Cx#=ReadFloat(f)
Cz#=ReadFloat(f)
Cy=ReadFloat(f)
Bx#=ReadFloat(f)
Bz#=ReadFloat(f)
By#=ReadFloat(f)
temp=CreatePivot()
AlignToVector temp,ax,ay,az,1
AlignToVector temp,bx,by,bz,2
AlignToVector temp,cx,cy,cz,3
pitch#=EntityPitch(temp)
yaw#=EntityYaw(temp)
roll#=EntityRoll(temp)
FreeEntity temp
If frame=1
tag=CreatePivot(root)
PositionEntity tag,x,y,z
NameEntity tag,Trim(name)
EndIf

If animated
If frame=1
at.md3_animtag=New md3_animtag
at\tagindex=t
at\tag=tag
at\root=root
Else
For at.md3_animtag=Each md3_animtag
If at\tagindex=t And at\root=root Exit 
Next
EndIf
at\framevalid[frame]=True
at\x[frame]=x
at\y[frame]=y 
at\z[frame]=z
at\pitch[frame]=pitch
at\yaw[frame]=yaw
at\roll[frame]=roll
EndIf
Next
Next
SeekFile f,offsetSurfaces
For surface=1 To numSurfaces
offsetStart=FilePos(f)
ident=ReadInt(f)
name$=ReadFixedString(f,64)
name=Trim(name)
flags=ReadInt(f)
numFrames=ReadInt(f)
numShaders=ReadInt(f)
numVertices=ReadInt(f)
numTriangles=ReadInt(f)
offsetTriangles=ReadInt(f)
offsetShaders=ReadInt(f)
offsetTexcoords=ReadInt(f)
offsetVertices=ReadInt(f)
offsetEnd=ReadInt(f)

surf=CreateSurface(root)
If skinfile
SeekFile skinfile,0
While Not Eof(skinfile)
s$=ReadLine(skinfile)
If Instr(s,",")
surfacename$=Piece(s,1,",")
texturename$=Piece(s,2,",")
texturename=FileName(texturename,True)
DebugLog surfacename+","+texturename
DebugLog name
If Lower(surfacename)=Lower(name)
br=LoadBrush(FileDir(file)+texturename)
If br
PaintSurface surf,br
FreeBrush br
EndIf
Exit 
EndIf
EndIf
Wend
EndIf

If Not skinfile
SeekFile f,offsetShaders+offsetStart
For shader=1 To numShaders
name$=ReadFixedString(f,64)
name=Trim(name)
index=ReadInt(f)

br=LoadBrush(FileDir(file)+FileName(name,True))
If br
PaintSurface surf,br
FreeBrush br
EndIf
Next 
EndIf
If animated
For vertex=0 To numVertices-1
an.md3_animvertex=New md3_animvertex
an\surf=surf
an\vert=vertex
an\root=root
Next
EndIf
SeekFile f,offsetVertices+offsetStart
For frame=1 To numFrames
For vertex=0 To numVertices-1
t=ReadShort(f)
If t>32767 t=t-65535 
x#=Float(t)/64.0
t=ReadShort(f)
If t>32767 t=t-65535 
z#=Float(t)/64.0
t=ReadShort(f)
If t>32767 t=t-65535 
y#=Float(t)/64.0
normal=ReadShort(f)

If frame=1 AddVertex surf,x,y,z
If animated
For an.md3_animvertex=Each md3_animvertex
If an\surf=surf
If an\vert=vertex
an\x[frame]=x
an\y[frame]=y
an\z[frame]=z
EndIf
EndIf
Next
EndIf
Next
Next
SeekFile f,offsetTexcoords+offsetStart
For texcoord=0 To numVertices-1
u#=ReadFloat(f)
v#=ReadFloat(f)
VertexTexCoords surf,texcoord,u,v
Next
SeekFile f,offsetTriangles+offsetStart
For triangle=1 To numTriangles
v2=ReadInt(f)
v0=ReadInt(f)
v1=ReadInt(f)

AddTriangle surf,v0,v1,v2
Next
SeekFile f,offsetend+offsetStart
Next
UpdateNormals root
CloseFile f
If skinfile CloseFile skinfile
Return root
End Function
 
Function AnimateMD3(root,time#,startframe,framelength,interpolation=True)
If interpolation
ut=Ceil(time)
lt=Floor(time)
If ut>startframe+framelength ut=startframe
dt#=time-Float(lt)
EndIf
For anim.md3_animvertex=Each md3_animvertex
If anim\root=root
If interpolation
x#=anim\x[lt]+(anim\x[ut]-anim\x[lt])*dt
y#=anim\y[lt]+(anim\y[ut]-anim\y[lt])*dt
z#=anim\z[lt]+(anim\z[ut]-anim\z[lt])*dt
Else
x#=anim\x[time]
y#=anim\y[time]
z#=anim\z[time] 
EndIf
VertexCoords anim\surf,anim\vert,x,y,z
EndIf
Next
For at.md3_animtag=Each md3_animtag
If at\root=root
If interpolation
x#=at\x[lt]+(at\x[ut]-at\x[lt])*dt
y#=at\y[lt]+(at\y[ut]-at\y[lt])*dt
z#=at\z[lt]+(at\z[ut]-at\z[lt])*dt
pitch#=at\pitch[lt]+AngleDifference(at\pitch[lt],at\pitch[ut])*dt
yaw#=at\yaw[lt]+AngleDifference(at\yaw[lt],at\yaw[ut])*dt 
roll#=at\roll[lt]+AngleDifference(at\roll[lt],at\roll[ut])*dt
Else
x#=at\x[time]
y#=at\y[time]
z#=at\z[time]
pitch#=at\pitch[time]
yaw#=at\yaw[time] 
roll#=at\roll[time] 
EndIf
RotateEntity at\tag,pitch,yaw,roll
PositionEntity at\tag,x,y,z
EndIf
Next
UpdateNormals root
End Function
Function AlignEntity(e,e2,g=False)
PositionEntity e,EntityX(e2,g),EntityY(e2,g),EntityZ(e2,g),g
End Function
Function MD3AnimationFrames(root)
For at.md3_animtag=Each md3_animtag
If at\root=root
For frame=1 To MD3_MAXFRAMES
If Not at\framevalid[frame] Return frame
Next
Exit
EndIf
Next
Return MD3_MAXFRAMES
End Function
;Read a string of determinate length
Function ReadFixedString$(f,n)
Local p
For p=1 To n
s$=s+Chr(ReadByte(f))
Next
Return s
End Function
Function FileDir$(pathname$)
Local n
Local p
If Not FileType(pathname) RuntimeError "File "+Chr(34)+pathname+Chr(34)+" does not exist."
n=1
While n
n=Instr(pathname,"/",p+1)
If n=0 n=Instr(pathname,"\",p+1)
If n p=n
If KeyHit(1) End
Wend
If p Return Left(pathname,p)
End Function
Function Piece$(s$,entry,char$=" ")
While Instr(s,char+char)
s=Replace(s,char+char,char)
Wend
For n=1 To entry-1
p=Instr(s,char)
s=Right(s,Len(s)-p)
Next
p=Instr(s,char)
If p<1
a$=s
Else
a=Left(s,p-1)
EndIf
Return a
End Function
Function FileName$(pathname$,ext=False)
Local p
p=1
While p
p=Instr(pathname,"/")
If p=0 p=Instr(pathname,"\")
pathname=Right(pathname,Len(pathname)-p)
If KeyHit(1) End
Wend
If Not ext
p=Instr(pathname,".")
If p pathname=Left(pathname,p-1)
EndIf
Return pathname
End Function
Function AngleDifference#(angle1#,angle2#)
Return ((angle2 - angle1) Mod 360 + 540) Mod 360 - 180
 
Ответить с цитированием
Старый 22.01.2007, 05:07   #6
battou
Нуждающийся
 
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений
(для 3 пользователей)
Re: поддерживается ли MD3?

Это типа код Блитза на загрузку модели????????? 0о
(Offline)
 
Ответить с цитированием
Старый 22.01.2007, 09:12   #7
jimon
 
Сообщений: n/a
Re: поддерживается ли MD3?

battou
вот что тебе собсно надо
http://www.geocities.com/drago_blitz/

Diablo1909
громоздкий код в етой либе
хотя я так пробежался глазами сравнивая с форматом модели
(http://icculus.org/homepages/phaetho...md3format.html)
то оно вроде правильно грузит - хотя не пробовал, не знаю

идинственый и главный трабл
как вы все собрались работать с quake3 shader ?
там же много еффектов именно через них и делается
к примеру мигания всяких меней на пушках и тд
 
Ответить с цитированием
Старый 23.01.2007, 01:21   #8
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: поддерживается ли MD3?

обойдутся без миганий. переживут как нибудь.
(Offline)
 
Ответить с цитированием
Старый 23.01.2007, 02:16   #9
battou
Нуждающийся
 
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений
(для 3 пользователей)
Re: поддерживается ли MD3?

Странно, но эта либа не хочет грузить модель. У меня модель вся монолитная, и експортируется из МАКСа одним файлом. В демке к этому загрузчику модель состоит из кучи МД3 файлов. Вот, при загрузке моей модели Блитз ругается. Memory Access что-то там, короче сбой доступа к памяти чтоли. В чём проблема?
(Offline)
 
Ответить с цитированием
Старый 23.01.2007, 02:33   #10
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: поддерживается ли MD3?

Сообщение от battou
В демке к этому загрузчику модель состоит из кучи МД3 файлов.
как и в самом ку3.
(Offline)
 
Ответить с цитированием
Старый 23.01.2007, 13:49   #11
Черный крыс
 
Сообщений: n/a
Re: поддерживается ли MD3?

У меня грузиться нормально. Тока одного не могу понять....зачем вам МД3??? Когда есть б3д....он намного круче =)
 
Ответить с цитированием
Старый 23.01.2007, 18:56   #12
jimon
 
Сообщений: n/a
Re: поддерживается ли MD3?

конвертить md3 файлы в b3d довольно трудновато
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не поддерживается телефоном, загрузить ? jkeks Основной форум 3 08.03.2009 16:43


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


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