|
3D-программирование Вопросы, касающиеся программирования 3D мира |
10.08.2017, 12:13
|
#1
|
Оператор ЭВМ
Регистрация: 28.01.2013
Сообщений: 33
Написано 3 полезных сообщений (для 3 пользователей)
|
Отвязать от родителя
Объект привязал к родителю
Родитель повернулся на 180 вокруг Y
При EntityParent,obj,0 объект тоже разворачивает на 180 вокруг Y
Вопрос: Что из чего нужно вычесть, чтобы грамотно отвязать?
Спасибо.
|
(Offline)
|
|
10.08.2017, 19:46
|
#2
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Отвязать от родителя
EntityParent child, 0, [global]
попробуй третий параметр
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 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.08.2017, 09:47
|
#3
|
Оператор ЭВМ
Регистрация: 28.01.2013
Сообщений: 33
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Отвязать от родителя
Всё-одно разворачивает, да ещё и позицию сбрасывает на ноль
Global port
If EntityDistance (a\user,port)<=1.5 And portYaw# >=-178
portYaw#=EntityYaw (port)
TurnEntity port,0,-1,0
EntityParent a\user, port
Else If EntityDistance (a\user,port)>=3 And portYaw# <=-177
EntityParent a\user, 0,False
Может тут DeltaYaw надо, или TFormPoint ??
|
(Offline)
|
|
11.08.2017, 17:35
|
#4
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Отвязать от родителя
жи есть?
Я, правда, уже не помню, не стоит ли по умолчанию там уже единица
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
11.08.2017, 18:11
|
#5
|
Оператор ЭВМ
Регистрация: 28.01.2013
Сообщений: 33
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Отвязать от родителя
EntityParent entity,parent[,global]
global (не обязательно) - true - чтобы сохранить глобальную позицию и ориентацию привязанного объекта (по умолчанию).
Это ничего не даёт. Юзера разворачивает при отвязке.
|
(Offline)
|
|
11.08.2017, 18:48
|
#6
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Отвязать от родителя
Так у тебя же False стоит зачем-то?
EntityParent a\user, 0,False
Сделай так:
EntityParent a\user, 0,True
Тоже так же?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
11.08.2017, 18:57
|
#7
|
Оператор ЭВМ
Регистрация: 28.01.2013
Сообщений: 33
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Отвязать от родителя
по моему там true по умолчанию. Всё так же..
|
(Offline)
|
|
11.08.2017, 21:22
|
#8
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Отвязать от родителя
Сделай более простой пример с максимально простым кодом и без медии (например, на кубиках), чтобы его можно было запустить у себя.
Если нет возможности "потыкать", шанс того, что кто-то поможет, сильно снижается.
Кроме того, возможно, в процессе создания изолированного примера кода с багом, ты сам найдёшь его причину. Может быть, помимо отвязки от родителя, там ещё что-то делается, что влияет на результат.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
|
|
14.08.2017, 09:43
|
#9
|
Оператор ЭВМ
Регистрация: 28.01.2013
Сообщений: 33
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Отвязать от родителя
Сообщение от ABTOMAT
Сделай боле..........то влияет на результат.
|
Никак не думал, что такой простой вопрос окажется таким проблемным для профи........
|
(Offline)
|
|
14.08.2017, 10:42
|
#10
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: Отвязать от родителя
Ответ на твой вопрос достаточно простой: EntityParent ничего не поворачивает, только меняет координатную сетку для привязанного объекта.
Значит ошибка где-то в логике написанной тобой программы.
Т.к. саму программу ты к вопросу не добавил, всем остаётся лишь гадать что с ней не так
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо RBK за это полезное сообщение:
|
|
14.08.2017, 14:12
|
#11
|
Оператор ЭВМ
Регистрация: 28.01.2013
Сообщений: 33
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Отвязать от родителя
Сообщение от RBK
EntityParent ничего не поворачивает, только меняет координатную сетку для привязанного объекта.
|
Я и не утверждал обратного.
Без мыши отвязка нормальная:
Graphics3D 800,600,32,1 : SetBuffer BackBuffer()
font=LoadFont("arial",18) : SetFont font
Global user,portYaw#
world=CreatePlane() : tex=CreateTex(256,256) : ScaleTexture tex,3,3 : EntityTexture world,tex
Global port=CreateCylinder() :ScaleEntity port,2,0.02,2 : PositionEntity port,0,1,2
CreateUser()
Repeat
Updateuser()
UpdateWorld ()
RenderWorld ()
Color 255,255,100
Text 20,20,"X "+EntityX(user) : Text 20,40,"Y "+EntityY(user) : Text 20,60,"Z "+EntityZ(user)
Text 220,20,"Parent "+GetParent (user)
Flip
Cls
Until KeyHit(1)
End
;==========
Function CreateTex(w,h)
tex=CreateTexture(w,h)
SetBuffer TextureBuffer(tex)
Color 100,100,100
Rect 10,10,450,450
SetBuffer BackBuffer()
Return tex
End Function
Function CreateUser()
user=CreateCylinder(3) : ScaleEntity user,0.2,0.05,0.7 : EntityColor user,255,0,0 : PositionEntity user,0,1,-4
cam=CreateCamera() : PositionEntity cam,0,10,0 : TurnEntity cam,90,0,0
CameraProjMode cam,2 : CameraZoom cam,0.1 : EntityParent cam,user
End Function
Function Updateuser()
If KeyDown(200) MoveEntity user,0,0,0.1
If KeyDown(208) MoveEntity user,0,0,-0.1
If KeyDown(203) TurnEntity user,0,1.5,0
If KeyDown(205) TurnEntity user,0,-1.5,0
If EntityDistance (user,port)<=1.5 And portYaw >=-178
portYaw=EntityYaw (port)
TurnEntity port,0,-1,0
EntityParent user, port
Else If EntityDistance (user,port)>=4 And portYaw <=-177
EntityParent user, 0
EndIf
End Function
с мышью - нет
Graphics3D 800,600,32,2 : SetBuffer BackBuffer()
font=LoadFont("arial",18) : SetFont font
Global user, portYaw#
Global cam, camxa#, camya#
world=CreatePlane() : tex=CreateTex(256,256) : ScaleTexture tex,3,3 : EntityTexture world,tex
Global port=CreateCylinder() :ScaleEntity port,2,0.02,2 : PositionEntity port,0,1,10
CreateUser()
HidePointer
Repeat
Updateuser()
UpdateWorld ()
RenderWorld ()
Color 255,255,100
Text 20,20,"X "+EntityX(user) : Text 20,40,"Y "+EntityY(user) : Text 20,60,"Z "+EntityZ(user)
Text 220,20,"Parent "+GetParent (user)
Text 220,40,"Yuser "+EntityYaw (user)
Flip
Cls
Until KeyHit(1)
End
;==========
Function CreateTex(w,h)
tex=CreateTexture(w,h)
SetBuffer TextureBuffer(tex)
Color 100,100,100
Rect 10,10,450,450
SetBuffer BackBuffer()
Return tex
End Function
Function CreateUser()
user=CreateCylinder(3) : ScaleEntity user,0.2,0.5,0.7 : EntityColor user,255,0,0 : PositionEntity user,0,1,0
cam=CreateCamera(user) : PositionEntity cam,0,18,0
End Function
Function Updateuser()
If KeyDown(200) MoveEntity user,0,0,0.1
If KeyDown(208) MoveEntity user,0,0,-0.1
If KeyDown(203) MoveEntity user,-0.1,0,0
If KeyDown(205) MoveEntity user,0.1,0,0
mxs#=MouseXSpeed()*0.25
mys#=MouseYSpeed()*0.25
MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
camxa= camxa-mxs Mod 360
camya= camya+mys
If camya<-70 Then camya=-70
If camya>70 Then camya=70
RotateEntity user,0, camxa,0
RotateEntity cam, camya,0,0
If EntityDistance (user,port)<=1.5 And portYaw >=-178
portYaw=EntityYaw (port)
TurnEntity port,0,-1,0
EntityParent user, port
Else If EntityDistance (user,port)>=6 And portYaw# <=-177
EntityParent user, 0
EndIf
End Function
|
(Offline)
|
|
14.08.2017, 14:46
|
#12
|
Разработчик
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений (для 220 пользователей)
|
Ответ: Отвязать от родителя
Я исходя из вышенаписанного вообще ничего не понял, чего хочет ТС
Сообщение от sdf111
EntityParent user, 0
|
Это что?
__________________
|
(Offline)
|
|
14.08.2017, 15:32
|
#13
|
Оператор ЭВМ
Регистрация: 28.01.2013
Сообщений: 33
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Отвязать от родителя
Сообщение от L-ee-X
чего хочет ТС
|
ТС хочет чтобы юзера не разворачивало в момент отвязки. Пост#11 оффтоп№2(с мышью)
|
(Offline)
|
|
14.08.2017, 15:55
|
#14
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: Отвязать от родителя
Итак, объясняю что происходит:
когда расстояние между user и port становится <= 1.5,
вот эта часть кода крутит объект port
If EntityDistance(user,port)<=1.5 And portYaw >=-178
portYaw=EntityYaw (port)
. . .
Endif
когда portYaw станет >= -178 , вращение остановится
привязки и остальное не влияют на эту часть кода
стоп проблема в другой части
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
Последний раз редактировалось RBK, 14.08.2017 в 16:17.
Причина: не понял в чем пролема
|
(Offline)
|
|
14.08.2017, 16:17
|
#15
|
Оператор ЭВМ
Регистрация: 28.01.2013
Сообщений: 33
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Отвязать от родителя
Сообщение от RBK
...
когда расстояние между user и port становится <= 1.5,
вот эта часть кода крутит объект port
когда portYaw станет >= -178 , вращение остановится
привязки и остальное не влияют на эту часть кода
|
Спасибо. Но я как бы в курсе....
А дальше?
Когда, в примере из Поста#11 оффтоп №2(с мышью), мы удаляемся от лифта и Parent становится =0 , юзера разве не разворачивает на 180?..
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:45.
|