Пятница, 29 Марта 2024, 09:35

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Среды разработки и Языки разработки игр » Как делать карту в blitz3d? (начальный код для моделей)
Как делать карту в blitz3d?
TermiantorДата: Среда, 19 Ноября 2008, 15:39 | Сообщение # 1
почетный гость
Сейчас нет на сайте
люди,я почитав статейке о нем начал делать карту и..чот появилась трабла...в статейке которую я читал все делали в CartographyShop а я сделал в 3dmax
кто может мне начальный код для моделей 3max'a сделать?оч прошу...или он такойже как к CartographyShop?
вот к CartographyShop код:
;=================================================
;=================================================
Function LoadCSM(file$,texturepath$=".\")

f=ReadFile(file)
If Not f Return

ChangeDir FileDir(file)

lightmapbank=CreateBank()
texturebank=CreateBank()

;Version - this will load CShop 4.0 and CShop 4.1 maps
version=ReadInt(f)
If version<>4 And version<>5
CloseFile f
Return
EndIf

map=CreatePivot()

;Groups
DebugLog groupcount+" groups"
groupcount=ReadInt(f)
For n=1 To groupcount
flags=ReadInt(f)
group=ReadInt(f)
Properties$=readstringn(f)
r=ReadInt(f)
g=ReadInt(f)
b=ReadInt(f)
Next

;Visgroups (new in 4.1)
If version=5
visgroupcount=ReadInt(f)
For n=1 To visgroupcount
name$=readstringn(f)
flags=ReadInt(f)
r=ReadInt(f)
g=ReadInt(f)
b=ReadInt(f)
Next
EndIf

;Lightmaps
lightmapcount=ReadInt(f)
DebugLog lightmapcount+" lightmaps"
For n=1 To lightmapcount
w=ReadInt(f)
h=ReadInt(f)
texture=CreateTexture(w,h)
TextureCoords texture,1
ResizeBank lightmapbank,BankSize(lightmapbank)+4
PokeInt lightmapbank,BankSize(lightmapbank)-4,texture
LockBuffer TextureBuffer(texture)
For ty=0 To h-1
For tx=0 To w-1
hue=ReadInt(f)
WritePixelFast tx,ty,hue,TextureBuffer(texture)
Next
Next
UnlockBuffer TextureBuffer(texture)
Next

;Meshes
meshcount=ReadInt(f)
DebugLog meshcount+" meshes"
For n=1 To meshcount
flags=ReadInt(f)
group=ReadInt(f)
properties$=readstringn(f)
r=ReadInt(f)
g=ReadInt(f)
b=ReadInt(f)
x#=ReadFloat(f)
y#=Rea dFloat(f)
z#=ReadFloat(f)

If version=5 visgroup=ReadInt(f)

facecount=ReadInt(f)
DebugLog facecount+" surfaces."

mesh=CreateMesh(map)
NameEntity mesh,properties
PositionEntity mesh,x,y,z

;Surfaces
For s=1 To facecount
flags=ReadInt(f)
texturefile$=readstringn(f)
lightmapindex=ReadInt(f)
offsetu#=ReadFloat(f)
offsetv#=ReadFloat(f)
scaleu#=Re adFloat(f)
scalev#=ReadFloat(f)
rotation#=ReadFloat(f)
vertexcount=ReadInt(f)
DebugLog vertexcount+" vertices"
trianglecount=ReadInt(f)
DebugLog trianglecount+" triangles"
linecount=ReadInt(f)

surf=CreateSurface(mesh)
brush=CreateBrush()
texturefile=Lower(texturefile)
texture=retrievetexture(t exturepath+texturefile,texturebank)
If texture BrushTexture brush,texture
If lightmapindex>0 And lightmapindex*4<=BankSize(lightmapbank)
lightmap=PeekInt(lightmapbank,(lightmapindex-1)*4)
If lightmap
BrushTexture brush,lightmap,0,1
BrushFX brush,1
EndIf
EndIf
PaintSurface surf,brush
FreeBrush brush

;Vertices
For v=0 To vertexcount-1
x#=ReadFloat(f)
y#=ReadFloat(f)
z#=ReadFloat(f)
nx#=ReadFloat(f)
ny#=ReadFloat(f)
nz#=ReadFloat(f)
r=ReadInt(f)
g=Read Int(f)
b=ReadInt(f)
u0#=ReadFloat(f)
v0#=ReadFloat(f)
w0#=ReadFloat(f)
u1#=ReadFloat(f)
v1#=ReadFloat(f)
w1#=ReadFloat(f)

TFormPoi nt x,y,z,0,mesh
AddVertex surf,TFormedX(),TFormedY(),TFormedZ(),u0,-v0
VertexColor surf,v,r,g,b
VertexTexCoords surf,v,u1,-v1,0,1
VertexNormal surf,v,nx,ny,nz

Next

;Triangles
For t=0 To trianglecount-1
a=ReadInt(f)
b=ReadInt(f)
c=ReadInt(f)
AddTriangle surf,a,c,b
Next

For l=0 To linecount-1
a=ReadInt(f)
b=ReadInt(f)
Next

Next
Next

;Point Entities
entitycount=ReadInt(f)
DebugLog entitycount+" entities"
For n=1 To entitycount
visgroup=ReadInt(f) ; used to be flags, but wasn't really used
group=ReadInt(f)
properties$=readstringn(f)
x#=ReadFloat(f)
y#=ReadFloat(f)
z#=ReadFloat(f)
entity=CreatePivot(map)
NameEntity entity,properties
PositionEntity entity,x,y,z
Next

;Free textures
For n=0 To BankSize(lightmapbank)-1 Step 4
FreeTexture PeekInt(lightmapbank,n)
Next
FreeBank lightmapbank
For n=0 To BankSize(texturebank)-1 Step 8
FreeBank PeekInt(texturebank,n)
FreeTexture PeekInt(texturebank,n+4)
Next
FreeBank texturebank

CloseFile f
Return map
End Function

;Read a null-terminated string
Function ReadStringN$(f,maxlength=0)
Repeat
ch=ReadByte(f)
If ch=0 Return t$
If maxlength
If Len(t$)=maxlength Return t$+Chr(ch)
EndIf
t$=t$+Chr$(ch)
Forever
End Function

;Return a loaded texture
Function RetrieveTexture(file$,bank)
For n=0 To BankSize(bank)-1 Step 8
namebank=PeekInt(bank,n)
s$=""
For b=0 To BankSize(namebank)-1
s=s+Chr(PeekByte(namebank,b))
Next
If s=file Return PeekInt(bank,n+4)
Next
ResizeBank bank,BankSize(bank)+8
namebank=CreateBank(Len(file))
For b=0 To BankSize(namebank)-1
PokeByte namebank,b,Asc(Mid(file,b+1))
Next
DebugLog "Loading texture "+file
PokeInt bank,BankSize(bank)-8,namebank
texture=LoadTexture(file)
If Not texture DebugLog "Failed to load texture "+Chr(34)+CurrentDir()+file+Chr(34)
PokeInt bank,BankSize(bank)-4,texture
Return texture
End Function

;Get the file part of a file path
Function FileName$(file$,ext=1)
file=Replace(file,"/","\")
Repeat
p=Instr(file,"\")
If p
file=Right(file,Len(file)-p)
Else
Exit
EndIf
Forever
If Not ext
p=Instr(file,".")
If p file=Left(file,p-1)
EndIf
Return file
End Function

;Get the directory of a file path
Function FileDir$(file$)
file=Replace(file,"/","\")
oldp=1
Repeat
p=Instr(file,"\",oldp)
If p
oldp=p+1
Else
file=Left(file,oldp-1)
Exit
EndIf
Forever
Return file
End Function

;Parsing 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 for retrieving entity properties
;[ "light"=KeyValue(entity,"classname") ]
Function KeyValue$(entity,key$)
properties$=EntityName(entity)
key$=Lower(key)
Repeat
p=Instr(properties,Chr(10))
If p test$=(Left(properties,p-1)) Else test=properties
testkey$=Piece(test,1,"=")
testkey=Trim(testkey)
testkey=Replace(testkey,Chr(34),"")
testkey=Lower(testkey)
If testkey=key
value$=Piece(test,2,"=")
value$=Trim(value$)
value$=Replace(value$,Chr(34),"")
Return value
EndIf
If Not p Return
properties=Right(properties,Len(properties)-p)
Forever
End Function
или посоветуйте полегче/потруднее но понятнее язык.

Сообщение отредактировал Termiantor - Среда, 19 Ноября 2008, 15:55
vergil010Дата: Четверг, 20 Ноября 2008, 12:46 | Сообщение # 2
3D master
Сейчас нет на сайте
тебе надо погрузить затекстуренные неанимированный модели?

skype: vergil010
TermiantorДата: Четверг, 20 Ноября 2008, 14:21 | Сообщение # 3
почетный гость
Сейчас нет на сайте
с этим я уже разобрался....терь другая прблема!я сделал карту,все получилось НО ту карту которую я сдела на 3dmax,конвертирвоал в b3d при запуске в карте естьстены а тутн ету.и пол бесконечный...

и если укому не трудно скиньте аську в личные сообщения если кому не трудно..ато ждать тут 24 часа это жесть

Сообщение отредактировал Termiantor - Четверг, 20 Ноября 2008, 14:32
vergil010Дата: Четверг, 20 Ноября 2008, 14:58 | Сообщение # 4
3D master
Сейчас нет на сайте
зачем 24 часа, зачем ты ковертировал в b3d, blitz поддерживает 3ds, только я немного мудренно делал, я вставлял объекты( точнее их группу как один объект ) и добавлял к ним коллизию, а сам ландшафт создавал в geoscape3d

skype: vergil010
TermiantorДата: Пятница, 21 Ноября 2008, 13:07 | Сообщение # 5
почетный гость
Сейчас нет на сайте
я корчое сделал мини лабиринт и все...Оо ща заценю вдруг получится
и правда работает!НО карта так и осталась бесконечная,без стен

Добавлено (20.11.2008, 17:56)
---------------------------------------------
ЛЮди ну помогите вы,на карте 3dmax стены есть а тут нету...что лделать?карта просто бесконецная поулчается вов се стороы кууда хочше можеш идти,но доконца так и не дойдеш...

Добавлено (21.11.2008, 09:45)
---------------------------------------------
нда недождешся тут походу ответа вразумительного

Добавлено (21.11.2008, 13:07)
---------------------------------------------
мини вопрос-как добавлять обекты т.е. у меня обект:стены,пол потолок.Как к полу,потолку добавить текстурку?что писатЬ?а так,стены отображатся текстурой которую я вписал,и на будующее напишите как например к такомоту обекту добавить одну или несколько текстур.Заранее гвоорю спасибо человеку,который ответит!!!

Сообщение отредактировал Termiantor - Четверг, 20 Ноября 2008, 15:13
vergil010Дата: Пятница, 21 Ноября 2008, 16:06 | Сообщение # 6
3D master
Сейчас нет на сайте
короче смотри
;этой командой ты загружаешь свой объект, и если в 3d максе затекстурить объект и поместить текстуры в папку с моделью, то они натянутся автомотически.(mod - это папка с моделью)
object=LoadMesh("mod\object.3DS")
А про коллизию напишу поздней, сейчас времени нет.


skype: vergil010
TermiantorДата: Пятница, 21 Ноября 2008, 18:47 | Сообщение # 7
почетный гость
Сейчас нет на сайте
я прост такоую штуку сделал...я конвертировал модели из картографи шопа в 3ds и чтото перестало все опять делатца..снвоа карта бесконечная..

Добавлено (21.11.2008, 18:28)
---------------------------------------------
чот нехочет запускатся как ты написал пишет expecting end of file

Добавлено (21.11.2008, 18:47)
---------------------------------------------
с первой штукой разобрался...жду твоего совета!спасибо что помогаеш!

vergil010Дата: Суббота, 22 Ноября 2008, 17:22 | Сообщение # 8
3D master
Сейчас нет на сайте
допутим у тебя есть затектуренная модель домика (home.3DS), в блитсе ты сохраняешь свой новый проект, например в папку на рабочем столе, затем в этой папке создаёшь папку с названием, например - mod, далее копируешь(сохраняешь) туда модель твоего домика, копируешь туда все тектуры(которые использовались при текстуринге домика), теперь вставляешь его в блитс
home=LoadMesh("mod\home.3DS")
Готово
затем размещаешь свой домик командой PositionEntity


skype: vergil010
TermiantorДата: Суббота, 22 Ноября 2008, 22:35 | Сообщение # 9
почетный гость
Сейчас нет на сайте
я пытался так как ты мне написал сделать,но почемуто рабоает тока со словом room т.е. строчка такая room=LoadMesh("1-3.b3d") .Если я пишу вместо room чтото другое например,home,то мне выпадает ошибка...хех похоже пишется тока room,какбы я не сохранял карту...ошибка с моей стороны?или эт так глючит блитз?
vergil010Дата: Воскресенье, 23 Ноября 2008, 09:27 | Сообщение # 10
3D master
Сейчас нет на сайте
значит у тебя room ещё где-то используется, потому и пишет ошибку)))

skype: vergil010
TermiantorДата: Воскресенье, 23 Ноября 2008, 12:41 | Сообщение # 11
почетный гость
Сейчас нет на сайте
слушай....новая проблема!с дверьми...
Type doorsinfo
Field ix%,iz%
Field oDoor%
Field Pivot
Field status%
Field pos#
Field doortype% ; VDOOR, HDOOR
Field Delay%
Field ticks#
Field DoorName$
такйо код указывает статья.но в статье они делают на основе карты ,т.е. map .Немогбы ты мне с дверьми ещё немного помоч?


Сообщение отредактировал Termiantor - Воскресенье, 23 Ноября 2008, 14:36
vergil010Дата: Воскресенье, 23 Ноября 2008, 19:04 | Сообщение # 12
3D master
Сейчас нет на сайте
эмм... кинь мне в личку свой e-mail я тебе скину blitzschool, а там я думаю ты сам сможешь разобраться!

skype: vergil010
Форум игроделов » Движки для разработки игр и сложные системы разработки » Среды разработки и Языки разработки игр » Как делать карту в blitz3d? (начальный код для моделей)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг