 |
3D-программирование Вопросы, касающиеся программирования 3D мира |
30.10.2007, 00:45
|
#16
|
|
Re: Прибить гвоздями, либо приварить?
любой баг надо начать с симуляции его на стрес-тестовой программе
именно она показывает где баг - за тестовой прогой или в тестовой проге
если баг появляется за тестовой прогой - обращайся к разработчику ПО
если в тестовой проге - это не баг, просто надо правильно писать
по скольку блиц уже скока лет существует, и ранее таких проблем
не замечалось .. то скорее виноват сам программист который не верит
в свои ошибки ...
ps. нужно только анализировать ...
|
|
|
30.10.2007, 02:30
|
#17
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Прибить гвоздями, либо приварить?
Вот специально копировал части кода из функций с которыми баг из поста 10.
Const TypeTehnika=1,TypeEarth=2,TypeNebo=3
k1 = LoadMesh("Data\object\ships\k1\k1.b3d")
ScaleEntity k1,0.1,0.1,0.1
PositionEntity k1,5,4,30
RotateEntity k1, 0, 90, 0
EntityRadius k1,3
EntityType k1,TypeTehnika
Planet1Plane = CreatePlane()
EntityType Planet1Plane,TypeEarth
EntityAlpha Planet1Plane,0.999
Planet1WoterTexture=LoadTexture("Data\textures\pesok.jpg")
ScaleTexture Planet1WoterTexture,15,15
EntityTexture Planet1Plane,Planet1WoterTexture
Planet1Nebo = CreatePlane()
PositionEntity Planet1Nebo,0,3000,0
RotateEntity Planet1Nebo, 0, 0, 180
EntityAlpha Planet1Nebo,0.7
EntityType Planet1Nebo,TypeNebo
Planet1NeboTexture=LoadTexture("Data\textures\Planet1-Nebo.jpg")
ScaleTexture Planet1NeboTexture,3000,3000
EntityTexture Planet1Nebo,Planet1NeboTexture
While Not KeyDown(1)
RenderWorld
Collisions TypeTehnika,TypeEarth,2,3
Collisions TypeTehnika,TypeNebo,2,3
Чё тут анализировать то?
почему:
Collisions TypeTehnika,TypeEarth,2,3
работает как
Collisions TypeTehnika,TypeEarth,2,1
|
(Offline)
|
|
30.10.2007, 04:59
|
#18
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Прибить гвоздями, либо приварить?
почему:
Collisions TypeTehnika,TypeEarth,2,3
работает как
Collisions TypeTehnika,TypeEarth,2,1
|
А где у тебя код, где бы объекты двигались ?
Ты поставил скользящую коллизию, а она работает на останов ?
Чудес не бывает, бывают кривые руки и недостаток мозгов (без обид, я сам тормоз)
Код управления движением объектов в студию.
А лучше тест с моделями (повтори так называемый "баг" с минимумом кода)
__________________
|
(Offline)
|
|
30.10.2007, 08:42
|
#19
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Прибить гвоздями, либо приварить?
Collisions TypeTehnika,TypeEarth,2,3
Collisions TypeTehnika,TypeNebo,2,3
вынеси из цикла.
это значит раз.
далее, вот ненадо к блицевским плейнам делать коллизию 2-ого типа (сфера к полигону), как эти самые плейны реализованы фиг знает, поетому ненадо.
или сделай EntityBox у ним, и коллизию тогда t1,t2,3,3
|
(Offline)
|
|
30.10.2007, 11:31
|
#20
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Прибить гвоздями, либо приварить?
Ну так как проблемы с коллизией я только у корабля пока заметил, постарался сделать пример касающийся только его, и его коллизии без лишних функций управления и тд.
Вопщем вставляйте код в свой блитц, и используйте свою медию, пофигу какие текстуры, а вместо корабля пусть хоть тролейбус будет.
Заметите, что корабль в земле застревает, когда должен скользить.
Примечание:
Q - загрузить небо, землю, камеру, функцию управления корабля
(больше 1 раза не нажимайте! ато создадите клоны - земли, корабля, камеры и выключите управление)
управление кораблём:
W A S D UP DOWN LEFT RIGHT - 8 клавиш, так надо, как запустите осваивайтесь в управлении сразу всеми восмью.
Тут и мышкой можно, но не нужно )

Graphics3D 1024, 768, 32
SetBuffer BackBuffer()
HidePointer
Global mXSp#
Global mYSp#
Global speedk1#=0
Global k1
Global k1u#=0
Global Planet1Plane
Global Planet1Nebo
Global Red=100
Global Green=100
Global Blue=100
Const TypeTehnika=1,TypeEarth=2,TypeNebo=3
Function k1()
k1 = LoadMesh("Data\object\ships\k1\k1.b3d")
ScaleEntity k1,0.1,0.1,0.1
PositionEntity k1,5,4,30
RotateEntity k1, 0, 90, 0
EntityRadius k1,3
EntityType k1,TypeTehnika
End Function
Function Camerak1()
Camerak1 = CreateCamera(k1)
PositionEntity Camerak1,3,60,-320
RotateEntity Camerak1, 0, 0, 0
CameraRange Camerak1,1.0,1000000
CameraClsColor Camerak1,red,green,Blue
End Function
Function k1u()
UpDown#=0.3
Zkrenk1#=1
XYkrenk1#=1
TSpeed#=0.020
mXSp=MouseXSpeed()
mYSp=MouseYSpeed()
TurnEntity k1,mYSp*TSpeed,0,0
TurnEntity k1,0,-mXSp*TSpeed,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
MoveEntity k1,0,0,+speedk1#
If KeyDown(30) Then TurnEntity k1,0,0,+Zkrenk1#
If KeyDown(32) Then TurnEntity k1,0,0,-Zkrenk1#
If KeyDown(200) Then TurnEntity k1,+XYkrenk1#,0,0
If KeyDown(208) Then TurnEntity k1,-XYkrenk1#,0,0
If KeyDown(203) Then TurnEntity k1,0,+XYkrenk1#,0
If KeyDown(205) Then TurnEntity k1,0,-XYkrenk1#,0
If KeyDown(42) Then
MoveEntity k1,0,+UpDown#,0
End If
If KeyDown(29) Then
MoveEntity k1,0,-UpDown#,0
End If
If KeyHit(17) Then
speedk1#=speedk1#+0.5
End If
If KeyHit(31) Then
speedk1#=speedk1#-0.5
End If
If speedk1#=2 Then
speedk1#=1.5
EndIf
If speedk1#=-0.5 Then
speedk1#=0
EndIf
End Function
Function Planet1World()
Planet1Plane = CreatePlane()
EntityType Planet1Plane,TypeEarth
EntityAlpha Planet1Plane,0.999
Planet1WoterTexture=LoadTexture("Data\textures\pesok.jpg")
ScaleTexture Planet1WoterTexture,15,15
EntityTexture Planet1Plane,Planet1WoterTexture
Planet1Nebo = CreatePlane()
PositionEntity Planet1Nebo,0,3000,0
RotateEntity Planet1Nebo, 0, 0, 180
EntityAlpha Planet1Nebo,0.7
EntityType Planet1Nebo,TypeNebo
Planet1NeboTexture=LoadTexture("Data\textures\Planet1-Nebo.jpg")
ScaleTexture Planet1NeboTexture,3000,3000
EntityTexture Planet1Nebo,Planet1NeboTexture
End Function
While Not KeyDown(1)
If KeyHit(16) Then
Planet1World()
k1()
Camerak1()
k1u#=1
End If
If k1u#=1 Then
k1u()
End If
UpdateWorld
RenderWorld
Collisions TypeTehnika,TypeEarth,2,3
Collisions TypeTehnika,TypeNebo,2,3
Flip
Wend
End
P.S. Заметил, что застревает при полёте в определённую сторону,
т.е. если смотреть по воображаемому компосу:
при полёте на север застревает, при полёте на юг не застревает.
Добавил:
если у неба коллизию убрать, тоесть стереть строчку
Collisions TypeTehnika,TypeNebo,2,3
то баг с застряванием в земле пропадает.
|
(Offline)
|
|
30.10.2007, 12:51
|
#21
|
Знающий
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений (для 133 пользователей)
|
Re: Прибить гвоздями, либо приварить?
Коллизии со сферами прекрасно работают, 3 работает как 1 скорей всего потому, что... так и предусмотрено... какбы защита от слольжения, лично я никогда не использую 3, всегда 2.
Ну а с привязкой... если использовать EntityParent - это не значит, что объекты намертво прям привязаны. AddMesh тут правильно советуют.
|
(Offline)
|
|
30.10.2007, 14:21
|
#22
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Прибить гвоздями, либо приварить?
Эддмеш эффекта не дал.
Как это предусмотрено? Это баг.
|
(Offline)
|
|
30.10.2007, 15:05
|
#23
|
|
Re: Прибить гвоздями, либо приварить?

Graphics3D 800, 600, 32
SetBuffer BackBuffer()
HidePointer
Global mXSp#
Global mYSp#
Global speedk1#=0
Global k1
Global k1u#=0
Global Planet1Plane
Global Planet1Nebo
Global Red=100
Global Green=100
Global Blue=100
Const TypeTehnika=1,TypeEarth=2,TypeNebo=3
Function k1()
k1 = CreateCube()
ScaleEntity k1,0.1,0.1,0.1
PositionEntity k1,5,4,30
RotateEntity k1, 0, 90, 0
EntityRadius k1,3
EntityType k1,TypeTehnika
End Function
Function Camerak1()
Camerak1 = CreateCamera(k1)
PositionEntity Camerak1,3,60,-320
RotateEntity Camerak1, 0, 0, 0
CameraRange Camerak1,1.0,1000000
CameraClsColor Camerak1,red,green,Blue
End Function
Function k1u()
UpDown#=0.3
Zkrenk1#=1
XYkrenk1#=1
TSpeed#=0.020
mXSp=MouseXSpeed()
mYSp=MouseYSpeed()
TurnEntity k1,mYSp*TSpeed,0,0
TurnEntity k1,0,-mXSp*TSpeed,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
MoveEntity k1,0,0,+speedk1#
If KeyDown(30) Then TurnEntity k1,0,0,+Zkrenk1#
If KeyDown(32) Then TurnEntity k1,0,0,-Zkrenk1#
If KeyDown(200) Then TurnEntity k1,+XYkrenk1#,0,0
If KeyDown(208) Then TurnEntity k1,-XYkrenk1#,0,0
If KeyDown(203) Then TurnEntity k1,0,+XYkrenk1#,0
If KeyDown(205) Then TurnEntity k1,0,-XYkrenk1#,0
If KeyDown(42) Then
MoveEntity k1,0,+UpDown#,0
End If
If KeyDown(29) Then
MoveEntity k1,0,-UpDown#,0
End If
If KeyHit(17) Then
speedk1#=speedk1#+0.5
End If
If KeyHit(31) Then
speedk1#=speedk1#-0.5
End If
If speedk1#=2 Then
speedk1#=1.5
EndIf
If speedk1#=-0.5 Then
speedk1#=0
EndIf
End Function
Function Planet1World()
Planet1Plane = CreatePlane()
EntityType Planet1Plane,TypeEarth
EntityAlpha Planet1Plane,0.999
Planet1WoterTexture=LoadTexture("1.jpg")
ScaleTexture Planet1WoterTexture,15,15
EntityTexture Planet1Plane,Planet1WoterTexture
Planet1Nebo = CreatePlane()
PositionEntity Planet1Nebo,0,3000,0
RotateEntity Planet1Nebo, 0, 0, 180
EntityAlpha Planet1Nebo,0.7
EntityType Planet1Nebo,TypeNebo
Planet1NeboTexture=LoadTexture("2.jpg")
ScaleTexture Planet1NeboTexture,3000,3000
EntityTexture Planet1Nebo,Planet1NeboTexture
End Function
While Not KeyDown(1)
If KeyHit(16) Then
Planet1World()
k1()
Camerak1()
k1u#=1
End If
If k1u#=1 Then
k1u()
End If
UpdateWorld
RenderWorld
Collisions TypeTehnika,TypeEarth,2,3
Collisions TypeTehnika,TypeNebo,2,3
Flip
Wend
End
этот код у меня работает ... так что давай прекращай уже постить
месаги о том что все глючит кроме тебя, а то уже бесит
|
|
|
30.10.2007, 15:25
|
#24
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Прибить гвоздями, либо приварить?
далее, вот ненадо к блицевским плейнам делать коллизию 2-ого типа (сфера к полигону), как эти самые плейны реализованы фиг знает, поетому ненадо.
|
если создать CreatePlane () то получится всего 2 полигона, а если CreatePlane (16), то - 32 (или 16  ) !!
|
(Offline)
|
|
30.10.2007, 15:38
|
#25
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Прибить гвоздями, либо приварить?

Сообщение от jimon

Graphics3D 800, 600, 32
SetBuffer BackBuffer()
HidePointer
Global mXSp#
Global mYSp#
Global speedk1#=0
Global k1
Global k1u#=0
Global Planet1Plane
Global Planet1Nebo
Global Red=100
Global Green=100
Global Blue=100
Const TypeTehnika=1,TypeEarth=2,TypeNebo=3
Function k1()
k1 = CreateCube()
ScaleEntity k1,0.1,0.1,0.1
PositionEntity k1,5,4,30
RotateEntity k1, 0, 90, 0
EntityRadius k1,3
EntityType k1,TypeTehnika
End Function
Function Camerak1()
Camerak1 = CreateCamera(k1)
PositionEntity Camerak1,3,60,-320
RotateEntity Camerak1, 0, 0, 0
CameraRange Camerak1,1.0,1000000
CameraClsColor Camerak1,red,green,Blue
End Function
Function k1u()
UpDown#=0.3
Zkrenk1#=1
XYkrenk1#=1
TSpeed#=0.020
mXSp=MouseXSpeed()
mYSp=MouseYSpeed()
TurnEntity k1,mYSp*TSpeed,0,0
TurnEntity k1,0,-mXSp*TSpeed,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
MoveEntity k1,0,0,+speedk1#
If KeyDown(30) Then TurnEntity k1,0,0,+Zkrenk1#
If KeyDown(32) Then TurnEntity k1,0,0,-Zkrenk1#
If KeyDown(200) Then TurnEntity k1,+XYkrenk1#,0,0
If KeyDown(208) Then TurnEntity k1,-XYkrenk1#,0,0
If KeyDown(203) Then TurnEntity k1,0,+XYkrenk1#,0
If KeyDown(205) Then TurnEntity k1,0,-XYkrenk1#,0
If KeyDown(42) Then
MoveEntity k1,0,+UpDown#,0
End If
If KeyDown(29) Then
MoveEntity k1,0,-UpDown#,0
End If
If KeyHit(17) Then
speedk1#=speedk1#+0.5
End If
If KeyHit(31) Then
speedk1#=speedk1#-0.5
End If
If speedk1#=2 Then
speedk1#=1.5
EndIf
If speedk1#=-0.5 Then
speedk1#=0
EndIf
End Function
Function Planet1World()
Planet1Plane = CreatePlane()
EntityType Planet1Plane,TypeEarth
EntityAlpha Planet1Plane,0.999
Planet1WoterTexture=LoadTexture("1.jpg")
ScaleTexture Planet1WoterTexture,15,15
EntityTexture Planet1Plane,Planet1WoterTexture
Planet1Nebo = CreatePlane()
PositionEntity Planet1Nebo,0,3000,0
RotateEntity Planet1Nebo, 0, 0, 180
EntityAlpha Planet1Nebo,0.7
EntityType Planet1Nebo,TypeNebo
Planet1NeboTexture=LoadTexture("2.jpg")
ScaleTexture Planet1NeboTexture,3000,3000
EntityTexture Planet1Nebo,Planet1NeboTexture
End Function
While Not KeyDown(1)
If KeyHit(16) Then
Planet1World()
k1()
Camerak1()
k1u#=1
End If
If k1u#=1 Then
k1u()
End If
UpdateWorld
RenderWorld
Collisions TypeTehnika,TypeEarth,2,3
Collisions TypeTehnika,TypeNebo,2,3
Flip
Wend
End
этот код у меня работает ... так что давай прекращай уже постить
месаги о том что все глючит кроме тебя, а то уже бесит
|
jimon издеваешся чтоли?
Я сказал медию заменить а не кубы генирировать.
Кубы и у меня не застревают, а загружаемый меш при такой коллизии при полёте на север застревает, при полёте на юг нет.
Берёш мой код, ставиш свои текстуры, и свою b3d модель.
|
(Offline)
|
|
30.10.2007, 16:32
|
#26
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Прибить гвоздями, либо приварить?
я могу ошибаться, но по-моему колиззии надо делать до апдейт ворлд... или нет, не знаю Б3Д нифига, а лезу еще куда-то )))
|
(Offline)
|
|
30.10.2007, 17:42
|
#27
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Прибить гвоздями, либо приварить?
Я сказал медию заменить а не кубы генирировать
|
4 года на Блитце и багов никаких с колижном не было ни разу.
И у тебя их нет - есть кривые руки и дурная голова
Тебе нужно решение твоей ошибки - выкладывай пример с медией.
нехер нам делать, решать твои проблемы подбором медиа.
Еще раз для бестолковых: в Блитце бага нет, он исключительно в неправильном коде
__________________
|
(Offline)
|
|
30.10.2007, 19:24
|
#28
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Прибить гвоздями, либо приварить?
Ппц где здесь код неправильный?
Щас выложу с медией...
Добавил:
Вот вам с медией bb файл.
http://ifolder.ru/3932722
Если вы найдёте ошибку в коде влеяющую на коллизию,
то вам блин за это булочную награду выдать надо будет.
И не говорите, что бага нету!
Я проверял на обоих моих компах, и на одном в институте!
Лично я вижу в этом баг плейнов блитца,
модель помещённая между двух плейнов
неправильно об них коллизится.
|
(Offline)
|
|
30.10.2007, 19:36
|
#29
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Прибить гвоздями, либо приварить?
Сообщение от dimanche13
я могу ошибаться, но по-моему колиззии надо делать до апдейт ворлд... или нет, не знаю Б3Д нифига, а лезу еще куда-то )))
|
Я это уже заранее проверил,
ставил коллизию куда токо можно,
эффект одинаковый.
|
(Offline)
|
|
30.10.2007, 20:33
|
#30
|
|
Re: Прибить гвоздями, либо приварить?
Blitzerg
ну и твой пример работает нормально ... ы ?
без разницы загружать модель или создавать куб
|
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:16.
|