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

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

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

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

Ответ
 
Опции темы
Старый 11.10.2011, 20:58   #1
Markova
ПроЭктировщик
 
Аватар для Markova
 
Регистрация: 11.10.2011
Адрес: Мурманск
Сообщений: 154
Написано 74 полезных сообщений
(для 218 пользователей)
Восклицание Как сделать в 3ds MAX карту с настроенной физикой и партиклами?

Подскажите пожалуйста, как он так всё заскриптовал http://uart.nxt.ru/ZQCODEDEMO.rar
как мне также сделать, чтобы через 3d max сделал карту для игры, и оп она уже с физикой
и со всеми примочками типа партикли.
(Offline)
 
Ответить с цитированием
Старый 11.10.2011, 21:25   #2
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Подскажите пожалуйста

В названии мешей в 3дМаксе пишешь что ты от них хочешь(например эмиттер огня или боди-коробка). А потом расшифровываешь это в блитце и применяешь нужные команды.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (11.10.2011)
Старый 11.10.2011, 21:33   #3
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений
(для 1,471 пользователей)
Ответ: Подскажите пожалуйста

Используй тэги в названиях объектов.

Function CheckTag$(var$,tag$)
Local tmp_l1,tmp_l2
If Not Instr(var,"["+tag+"]") Then Return "0"
If Not Instr(var,"[/"+tag+"]") Then
Return "1"
Else 
tmp_l1 = Instr(var,"["+tag+"]") + Len("["+tag+"]")
tmp_l2 = Instr(var,"[/"+tag+"]") - tmp_l1
Return Mid(var,tmp_l1,tmp_l2)
End If
End Function
Понимает тэги вида [test] (возвращает "0" или "1") и [test]10[/test] (возвращает то, что внутри тэга)
(Offline)
 
Ответить с цитированием
Старый 11.10.2011, 21:37   #4
Markova
ПроЭктировщик
 
Аватар для Markova
 
Регистрация: 11.10.2011
Адрес: Мурманск
Сообщений: 154
Написано 74 полезных сообщений
(для 218 пользователей)
В названии мешей в 3дМаксе пишешь что ты от них хочешь(например эмиттер огня или боди-коробка). А потом расшифровываешь это в блитце и применяешь нужные команды.
это я понял, а вот скрипы как сделаны я не понял и как он команды размножает?
Enter_JointBall]Auto]Celind1]Celind2]0]-1]0]
\\
Enter_JointBall]Auto]Celind2]Celind3]0]-1]0]
\\
Enter_JointBall]Auto]Celind3]Celind4]0]-1]0]
как это вообще работает “скрипы”

UPD:
Используй тэги в названиях объектов. что это?
(Offline)
 
Ответить с цитированием
Старый 11.10.2011, 21:51   #5
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Подскажите пожалуйста

Вот тут есть некоторое количество информации
http://forum.boolean.name/showpost.p...83&postcount=6
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (11.10.2011)
Старый 11.10.2011, 22:02   #6
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Подскажите пожалуйста

Я поясню так (человеческими, детскими понятиями):

Допустим ты в 3ДМаксе нарисовал пол (назвал его Plane)
Добавил 30 шариков (назвал их Ball)

В Blitz3D предоставленным кодом можно, например, закрасить как хочешь.

Ищешь в загруженной модели своей игры:
Plane - закрашиваешь зелёным цветом (это будет пол, земля)

Ищешь все шарики:
Ball - закрашиваешь серым цветом (это будут камни)

Можно также применять текстуры на них. Можно что угодно.
Дата рождения:
1 January 1965
Возраст:
46

Хотя я наверное это зря... детскими...


Я хотел вот что спросить.. Входит ли в полномочия модераторов - переименовывать названия тем на более подходящее к вопросу темы?
Или это уже вроде как "нарушение конституционных прав пользователей" или "за каждой темой следить - запаришься"?
(Offline)
 
Ответить с цитированием
Старый 11.10.2011, 22:09   #7
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Подскажите пожалуйста

Теоретики. Ни какой конкретики.

Вот же: http://forum.boolean.name/showpost.p...15&postcount=5
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 11.10.2011, 22:12   #8
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Подскажите пожалуйста

Сообщение от Randomize Посмотреть сообщение
Теоретики. Ни какой конкретики.

Вот же: http://forum.boolean.name/showpost.p...15&postcount=5
Ну не знаю.. Каждый ли осилит (с 2мя сообщениями, скорее всего новичок) такое вот:
Рекурсивный пробег по чилдам:
2-3 года назад я бы оXY..
(Offline)
 
Ответить с цитированием
Старый 11.10.2011, 22:13   #9
Markova
ПроЭктировщик
 
Аватар для Markova
 
Регистрация: 11.10.2011
Адрес: Мурманск
Сообщений: 154
Написано 74 полезных сообщений
(для 218 пользователей)
Ответ: Подскажите пожалуйста

То есть мне надо делать так
Function ApplyChild(child)
    Local name$=Lower(EntityName(child))
    If Instr(name$,"startplaer")>0 Then 
   filein = ReadFile("startpaer.dat")
    x# = ReadFloat( filein )
    y# = ReadFloat( filein )
    z#= ReadFloat( filein )
PositionEntity plaer,x#,y#,z# 
CloseFile( filein )
    EndIf
    If Instr(name$,"shield")>0 Then 
        ; ставим броню в месте этого чилда
    EndIf
    If Instr(name$,"enemy")>0 Then 
        ; ставим врага в месте этого чилда
    EndIf
End Function
(Offline)
 
Ответить с цитированием
Старый 11.10.2011, 22:19   #10
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Подскажите пожалуйста

Примерно так:

Тут грузим модель твоего уровня
Обрати внимание что тут используется LoadAnimMesh
Если грузить через LoadMesh то у нас весь уровень будет единой модельюа нам надо другое

Global LEVEL LoadAnimMesh("MyLevel.b3d")

Наш уровень загружен и теперь можно пробежаться по его кускам (Чилдам)
SeekChilds(LEVEL)


Эта ф-ция перебирает все куски уровня
Function SeekChilds(ent)  
    
Local ichild 
     
    
For i=1 To CountChildren(ent)  
        
child=GetChild(ent,i)  
        If 
child<>0  
            
If CountChildren(child)>0 Then SeekChilds(child)
           
            ; 
Выполняем операции над чилдом
            
То есть вызывается та самая нужная нам ф-ция ApplyChild
            
Которая ставит бронюоружие и тд
            ApplyChild
(child
        
           EndIf  
    
Next  
End 
Function 


Вот сама эта ф-ция
Function ApplyChild(child)
    
Local name$=Lower(EntityName(child))
    If 
Instr(name$,"startplaer")>0 Then 
   filein 
ReadFile("startpaer.dat")
    
x# = ReadFloat( filein )
    
y# = ReadFloat( filein )
    
z# = ReadFloat( filein )
PositionEntity plaer,x#,y#,z# 
CloseFilefilein )
    EndIf
    If 
Instr(name$,"shield")>0 Then 
        
ставим броню в месте этого чилда
    
EndIf
    If 
Instr(name$,"enemy")>0 Then 
        
ставим врага в месте этого чилда
    
EndIf
End Function

Всё это делаем до главного цикла 
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (11.10.2011)
Старый 11.10.2011, 23:15   #11
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: Подскажите пожалуйста

Нюхай баба тыкай мужик
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Hurrit за это полезное сообщение:
Colossus (12.10.2011), Randomize (11.10.2011)
Старый 12.10.2011, 01:14   #12
Markova
ПроЭктировщик
 
Аватар для Markova
 
Регистрация: 11.10.2011
Адрес: Мурманск
Сообщений: 154
Написано 74 полезных сообщений
(для 218 пользователей)
Ответ: Как сделать в 3ds MAX карту с настроенной физикой и партиклами?

Конечно же, метод описанный мною выше не является лучшим
Как психолог могу сказать, что принижение самооценки присуще всем программистам, что на практике противоречит реальному положению дел.

Hurrit

Я тебя понял, к этому ко всему ещё бы парсер хороший найти на чистом Blitze написанный.
(Offline)
 
Ответить с цитированием
Старый 12.10.2011, 07:22   #13
Markova
ПроЭктировщик
 
Аватар для Markova
 
Регистрация: 11.10.2011
Адрес: Мурманск
Сообщений: 154
Написано 74 полезных сообщений
(для 218 пользователей)
Ответ: Как сделать в 3ds MAX карту с настроенной физикой и партиклами?

Я вижу это вот так:
Type LoadMap
   Field ChildMaps
   Field ChildName$
End Type 

Global Maps

Function LoadMap(Maps_File$)

     Maps=LoadAnimMesh(Maps_File$)

For ChildN=1 To CountChildren(Maps)-1
  LM.LoadMap=New LoadMap
       Getemp=GetChild(Maps,ChildN)
          LM\ChildName$=EntityName(Getemp)
            LM\ChildMaps=FindChild(Maps,LM\ChildName$)
Next 

End Function

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

camera=CreateCamera()
   light=CreateLight()

LoadMap("MapsZ4.b3d")

For LM.LoadMap=Each LoadMap
  If LM\ChildName$="Celind1_Sfera_Body_0_1"
        PositionEntity camera,EntityX(LM\ChildMaps),EntityY(LM\ChildMaps),EntityZ(LM\ChildMaps)-150   
  EndIf
Next 

While Not KeyDown( 1 )

For LM.LoadMap=Each LoadMap
   If LM\ChildName$="Celind1_Sfera_Body_0_1"
        EntityColor  LM\ChildMaps,Rnd(255),0,0
  EndIf
Next 

RenderWorld
Flip
Wend
End
Карта та же у меня нечем в .b3d конвертировать.
Вложения
Тип файла: rar MapsZ4.rar (21.0 Кб, 494 просмотров)
(Offline)
 
Ответить с цитированием
Старый 16.10.2011, 11:35   #14
Markova
ПроЭктировщик
 
Аватар для Markova
 
Регистрация: 11.10.2011
Адрес: Мурманск
Сообщений: 154
Написано 74 полезных сообщений
(для 218 пользователей)
Ответ: Как сделать в 3ds MAX карту с настроенной физикой и партиклами?

Пообщавшись с автором выше изложенной демки, я понял, что мало чего понимаю в оптимизации кода, но он дал мне парсер тот самый который он сам использовал в демке.
Function parser$(txt$,index,delim$=" ")

Local search$
Local searched
Local lendelim%

txt$=txt$+delim$
lendelim=Len(delim$)

For i=1 To index
searched=Instr(txt$,delim$)
If searched<>0 Then

If i = index Then
txt$=Mid(txt$,1,searched-1)
Return txt$
Else
txt$=Mid(txt$,searched+lendelim)
EndIf

Else
Return ""
EndIf
Next

End Function

Я его сразу задействовал в своём проекте, вот полный исходный код:
; Graphics3D Example
; ------------------
Global FL_Pitch2#,FL_Yaw2#,FL_Roll2#,FL_XSpeed2#,FL_YSpee d2#,FL_ZSpeed2#,pp1$,aa1,p1$,Trik2$,Forror=1,gRAVI TY#=-1.6
Function FreeLook2(FL_Cam2)
FL_Pitch2#=FL_Pitch2#-(-MouseYSpeed()*0.02) : FL_Pitch2#=FL_Pitch2#/1.2
FL_Yaw2#=FL_Yaw2#+-(MouseXSpeed()*0.02) : FL_Yaw2#=FL_Yaw2#/1.2
MoveMouse (GraphicsWidth()/2,GraphicsHeight()/2)
FL_ZSpeed2#=FL_ZSpeed2#+Float(KeyDown(17)-KeyDown(31))*0.12 : FL_ZSpeed2#=FL_ZSpeed2#/1.14; w &amp; s
FL_XSpeed2#=FL_XSpeed2#+Float(KeyDown(32)-KeyDown(30))*0.12 : FL_XSpeed2#=FL_XSpeed2#/1.14 ; a &amp; d
FL_YSpeed2#=FL_YSpeed2#+Float(KeyDown(19)-KeyDown(33))*0.12 : FL_YSpeed2#=FL_YSpeed2#/1.14 ; r &amp; f
FL_Roll2#=(FL_Yaw2#*1.1)-(FL_XSpeed2#*2.3)
MoveEntity FL_Cam2,FL_XSpeed2#,FL_YSpeed2#+Abs(FL_Roll2#*FL_X Speed2#)/50,FL_ZSpeed2#
Local cp2#=EntityPitch(FL_Cam2,True)+FL_Pitch2#
If cp2<-89 Then cp2=-89
If cp2>89 Then cp2=89
RotateEntity FL_Cam2,cp2,EntityYaw(FL_Cam2)+FL_Yaw2#,FL_Roll2#
End Function

Global fpsindex#, fpstime#, fpsfold_millisecs#, fpsfps#, fpsfold2_Millisecs#
Function fps2#(time=1000)
fpsindex=fpsindex+1
fpstime=fpstime+MilliSecs()-fpsfold_millisecs
If fpstime=>time
fpsfps=fpsindex
fpstime=0
fpsindex=0
EndIf
fpsfold_Millisecs=MilliSecs()
Return fpsfps
End Function

Function parser$(txt$,index,delim$=" ")
Local search$
Local searched
Local lendelim%
txt$=txt$+delim$
lendelim=Len(delim$)
For i=1 To index
searched=Instr(txt$,delim$)
If searched<>0 Then

If i = index Then
txt$=Mid(txt$,1,searched-1)
Return txt$
Else
txt$=Mid(txt$,searched+lendelim)
EndIf

Else
Return ""
EndIf
Next
End Function

Global Maps,delet,deletStart,Start

Type LoadM
Field ChildMaps
Field ChildName$
Field AutoHide$
End Type

Function LoadMap(Maps_File$)
Maps=LoadAnimMesh(Maps_File$)
For ChildN=1 To CountChildren(Maps)
LM.LoadM=New LoadM
Getemp=GetChild(Maps,ChildN)
LM\ChildName$=EntityName(Getemp)
LM\ChildMaps=FindChild(Maps,LM\ChildName$)
LM\AutoHide$=parser(LM\ChildName$,1,".");Âûäèëÿåì òî÷üêè ñòàðòà èç îáùåãî èìåíè ÷èëäà. ÷èëäû äåéñòâèÿ Pick, GizmoBox...
EntityPickMode LM\ChildMaps,2
If LM\AutoHide$="Start" Or LM\AutoHide$="Exid" Or LM\AutoHide$="Pick" Or LM\AutoHide$="GizmoBox" Then HideEntity LM\ChildMaps;Ñêðûâàåì ÷èëäû ñòàðòà è äåéñòâèÿ

If Not Instr(RSet(LM\ChildName$,1),"@")>0 Then Delete LM;Óäàëÿåì èç ñïèñêà ÷èëäîâ íå èñïîëüçóåìûå èìåíà ÷èëäîâ
Next
End Function


Graphics3D 1024,768,32,1
SetBuffer BackBuffer()

Global camera=CreateCamera()
light=CreateLight()

MapsStarted$="Testmap.b3d|Start.@|";Ïðîãðàììíûé ñêðèïò


LoadMap(parser(MapsStarted$,1,"|"))

For LM.LoadM=Each LoadM
If Instr(LM\ChildName$,parser(MapsStarted$,2,"|"))>0 Then
PositionEntity camera,EntityX(LM\ChildMaps),EntityY(LM\ChildMaps) +20,EntityZ(LM\ChildMaps)
EndIf
Next

deletStart=1

While Not KeyDown( 1 )
FreeLook2(camera)
Mouse_Hit1=MouseHit(1)
pick=CameraPick(camera,MouseX(),MouseY())

For LM.LoadM=Each LoadM
;Îáðàáîòêà ïðîãðàììíîãî ñêðèïòà
If Instr(LM\ChildName$,"Pick.DoorLabEnt@")>0
If PickedEntity()=LM\ChildMaps And Mouse_Hit1
MapsStarted$="Testmap2.b3d|Start.Lab@|"
delet=1
EndIf
EndIf

If Instr(LM\ChildName$,"Pick.DoorLab@")>0
If PickedEntity()=LM\ChildMaps And Mouse_Hit1
MapsStarted$="Testmap.b3d|Exid.Lab@|"
delet=1
EndIf
EndIf

If Instr(LM\ChildName$,"Pick.DoorLab1@")>0
If PickedEntity()=LM\ChildMaps And Mouse_Hit1
MapsStarted$="Testmap.b3d|Start.|"
delet=1
EndIf
EndIf

Next

If Start=1
LoadMap(parser(MapsStarted$,1,"|"))
For LM.LoadM=Each LoadM
If Instr(LM\ChildName$,parser(MapsStarted$,2,"|"))>0 Then
PositionEntity camera,EntityX(LM\ChildMaps),EntityY(LM\ChildMaps) +20,EntityZ(LM\ChildMaps)
EndIf
Next
deletStart=1
Start=0
EndIf

For LM.LoadM=Each LoadM
If Instr(LM\AutoHide$,"Pick")>0
;EntityAlpha LM\ChildMaps,0
Dis#=EntityDistance(camera,LM\ChildMaps)
If Dis#<9
ShowEntity LM\ChildMaps
Else
HideEntity LM\ChildMaps
EndIf
EndIf
Next

If deletStart=1
For LM.LoadM=Each LoadM
If LM\AutoHide$="Start" Or LM\AutoHide$="Exid" Then Delete LM;Óäàëÿåì èç ñïèñêà èìåíà òî÷åê ñòàðòà, ïîñëå ñòàðòà îíè íàì áîëüøå íå íóæíû!
Next
deletStart=0
EndIf

If delet=1 ;Óäàëÿåì âñ¸ ïåðåä çàãðóçêîé ñëåäóþùåé êàðòû
For LM.LoadM=Each LoadM
Delete LM
Delete Each LoadM
Next
FreeEntity Maps
Start=1
delet=0
EndIf

UpdateWorld()
RenderWorld()

;For LM.LoadM=Each LoadM
;Print LM\ChildName$
;Next

Text 0,0,"Current FPS: "+fps2#(1000)
Flip

Wend
For LM.LoadM=Each LoadM
Delete LM
Delete Each LoadM
Next
FreeEntity Maps
End

Если я буду делать так переход с карты на карту, это будет правильно?
или лучше использовать команды Handle() и Object ну типа
If Mouse_Hit1 Then
CurrObj=Object.LoadM(EntityName(pick))
If PickedEntity()=CurrObj\ChildMaps And Mouse_Hit1
MapsStarted$="Testmap2.b3d|Start.Lab@|"
delet=1
EndIf
EndIf
Вот для наглядности с тест картами, подлетаем к двери, кликаем по кваду, переходим.
Вложения
Тип файла: rar New.rar (623.8 Кб, 489 просмотров)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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