forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Глюки камеры блик и вращении её вокруг перса (http://forum.boolean.name/showthread.php?t=8539)

Dark_Fox 23.06.2009 18:49

Глюки камеры блик и вращении её вокруг перса
 
Задача моя:
Сделать камеру с солнечными бликами и её вращение вокруг персонажа мышкой при зажатой какой нть клавише и при отпускании этой клавиши камера должна возвращаться за спину персонажа.

Делал:
взял код из примера Sun.rar

И вот что получилось:
Код:

user_piv=CreatePivot ()
PositionEntity user_piv_emat,-1,2,0
EntityType user_piv,user_col
        Model=CreateCube (user_piv)
        RotateEntity Model,0,0,0
        EntityColor Model,Int(Rnd(255)),Int(Rnd(255)),Int(Rnd(255))


ViewX = GraphicsWidth();<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
ViewY = GraphicsHeight();<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
ViewAspect# = Float(ViewX)/Float(ViewY);<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


Camera = CreateCamera(Model)
;CameraRange Camera, 1, 5000
spritecamera = Camera;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
spritepivot = CreateSpritePivot(spritecamera,1.01) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                CameraClsColor camera,0,0,0
                PositionEntity camera,0,4,-8
                CameraRange camera,0.1,5000

 Sun = CreatePivot()
Light = CreateLight(2, Sun)
PositionEntity Sun, -549, 1015, 33, 1
SetupFlares("lens-flares.jpg") ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
PointEntity Camera, Sun

после Repeat

UpdateFlare(Camera, Sun) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    mx#=CurveValue(MouseXSpeed()*0.4,mx,11)
        my#=CurveValue(MouseYSpeed()*0.4,my,11)
        MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
        pitch#=EntityPitch(user_piv)
        yaw#=EntityYaw(user_piv)
        pitch=pitch+my
        yaw=yaw-mx
        If pitch>89 pitch=89
        If pitch<-89 pitch=-89
        RotateEntity user_piv,0,yaw,0
        ;RotateEntity Camera,0,yaw,0
        TurnEntity Camera,pitch,0,0

Проблема:
Камера при старте где то с боку и вращается вокруг какой та точки до тех пор пока камера не будет опушена взглядом в землю тогда камера оказывается там где должна(позади перса и при движении мыши перс поворачивается)
Если я дописываю код для вращения
Код:

Graphics3D 800,600 , 32, 2

Global user_pivot=CreatePivot() ; Создаешь точку

cri=CreateLight ()

cam=CreatePlane()
cam_tex=LoadTexture ("807331659.jpg")
ScaleTexture cam_tex,4,4
EntityTexture cam,cam_tex
        camera = CreateCamera ()
        Model=CreateCube ()
        EntityColor Model,Int(Rnd(255)),Int(Rnd(255)),Int(Rnd(255))

        Model1=CreateCube ()
        EntityColor Model1,Int(Rnd(235)),Int(Rnd(255)),Int(Rnd(215))
        PositionEntity Model1,10,0,1

PositionEntity camera,0,5,-10 ; Ставим камеру в первоначальные  координаты (Относительно твоего игрока ) . Получается , что камера находится чуть вверху и позади .

;Далее пишешь в цикле

        b1#=0;предельный угол
While Not KeyDown( 1 )

mx=MouseXSpeed()

PositionEntity user_pivot,EntityX(Model),EntityY(Model),EntityZ(Model) ; Делаем так , чтобы точка всегда была в координатах "YourPlayer" (это твой игрок) . Но не вертелась вместе с игроком .

If MouseDown (2) ;button = 1: Левая кнопка, 2: Правая кнопка, 3: Средняя кнопка 
RotCamera=1
Else
RotCamera=0
EndIf

If RotCamera=1 Then
EntityParent camera,user_pivot ; Прикрепляем твою камеру к созданной точке .
;TurnEntity user_pivot,0,2,0
TurnEntity user_pivot,0,-mx,0
EndIf

If RotCamera=0 Then
RotateEntity user_pivot,0,0,0
;Abs(EntityYaw#(pivot1))
EndIf


 

        UpdateWorld()
        RenderWorld()

Text 0,20,"Yaw: "+EntityYaw#(user_pivot)

Flip
Wend
;----------------------------
End

камера двигается по прямой и после отпускания клавиши вращается перс а не поворачиваться

Как лечить этот баг и сделать осмотр персонажа камерой?

Sleepybear 23.06.2009 20:46

Ответ: Глюки камеры блик и вращении её вокруг перса
 
я напимер не понял ничего, Причем тут Блики солнца и вращение камеры?

Dark_Fox 23.06.2009 21:24

Ответ: Глюки камеры блик и вращении её вокруг перса
 
В том что все это появилось только после добавление бликов от солнца

NitE 23.06.2009 22:42

Ответ: Глюки камеры блик и вращении её вокруг перса
 
что всё это ?

Dark_Fox 24.06.2009 14:54

Ответ: Глюки камеры блик и вращении её вокруг перса
 
Так, не кто не понял баг.
Тогда смотрите все в живую(кому интересно) тут (архив)
P.S.Использован ньютон(частично)

ArtemkA 24.06.2009 14:57

Ответ: Глюки камеры блик и вращении её вокруг перса
 
твой перс - это желтый куб? Если да, то он никуда не вращаеться, а стоит как вкопанный.

Dark_Fox 24.06.2009 16:05

Ответ: Глюки камеры блик и вращении её вокруг перса
 
опусти камеру вниз(чуть ли не в землю) и камера встанет на место.
это и есть баг.

Sleepybear 24.06.2009 16:13

Ответ: Глюки камеры блик и вращении её вокруг перса
 
14 метров, качать из за пары строк никто не будет.

Цитата:

вращение вокруг персонажа мышкой при зажатой какой нть клавише и при отпускании этой клавиши камера должна возвращаться за спину персонажа
Код:

Graphics3D 1024, 768, 32,1:SetBuffer BackBuffer():User=CreateCube():ScaleEntity User,1,.1,3:EntityColor User,255,255,128:PivotCam=CreatePivot():PivotUser=CreatePivot():Cam = CreateCamera(PivotCam):Plane = CreatePlane():MoveEntity Plane, 0, -1,0:Tex = LoadTexture("textura.JPG"):ScaleTexture Tex, 10, 10:EntityTexture Plane, Tex:FreeTexture tex:While Not KeyDown(1):mx#=CurveValue(-MouseXSpeed()*0.4,mx,11):MoveMouse GraphicsWidth()/2,GraphicsHeight()/2:TurnEntity Cam,0,mx#,0:If MouseDown(2):EntityParent Cam,PivotUser:PositionEntity Cam,0,3,-5:PointEntity Cam,User:TurnEntity PivotUser,0,mx#,0:Else:EntityParent Cam,PivotCam:PositionEntity Cam,0,0,0:RotateEntity Cam,0,0,0:EndIf:PositionEntity PivotUser,EntityX(User),EntityY(User),EntityZ(User):PositionEntity PivotCam,EntityX(User),EntityY(User)+3,EntityZ(User)-5
If KeyDown(17) MoveEntity User, 0, 0, 1
If KeyDown(31) MoveEntity User, 0, 0, -1
If KeyDown(30) MoveEntity User, -1, 0, 0
If KeyDown(32) MoveEntity User, 1, 0, 0
RenderWorld():Flip:Wend:End
Function CurveValue#(newvalue#,oldvalue#,increments )
  If increments>1 oldvalue#=oldvalue#-(oldvalue#-newvalue#)/increments
  If increments<=1 oldvalue=newvalue
  Return oldvalue#
End Function

ты это хотел?
Правый тырк мышем.
Только текстуру подправь там, а то не видно движения

Dark_Fox 24.06.2009 16:30

Ответ: Глюки камеры блик и вращении её вокруг перса
 
от части да.
но главная проблема в камере в обычном режиме(игровом)

Sleepybear 24.06.2009 16:33

Ответ: Глюки камеры блик и вращении её вокруг перса
 
Цитата:

Сообщение от Dark_Fox (Сообщение 108914)
от части да.
но главная проблема в камере в обычном режиме(игровом)

Какая проблема?

Dark_Fox 24.06.2009 16:57

Ответ: Глюки камеры блик и вращении её вокруг перса
 
камера двигается по кругу на определенном расстоянии от перса. и только если я опускаю камеру, так что вижу землю, камера начинает работать нормально( при движении мыши(лево-право) поворачивается персонаж и меняется угол(вперед-назад) обзора)

Sleepybear 24.06.2009 17:08

Ответ: Глюки камеры блик и вращении её вокруг перса
 
Я бы пребложил удалить лишнее из кода и переписать все ручками, а после добавлять физику и блики. Скорее всего у тебя там с переменными путаница

Dark_Fox 24.06.2009 17:24

Ответ: Глюки камеры блик и вращении её вокруг перса
 
все так и сделано.

Sleepybear 24.06.2009 17:35

Ответ: Глюки камеры блик и вращении её вокруг перса
 
Судя по описанием ошибка в коде. (я код не видел)


Или не внимателно писал, или невнимательно копипастил.

Dark_Fox 24.06.2009 17:45

Ответ: Глюки камеры блик и вращении её вокруг перса
 
с кодом блик наверное 2 вариант
а с общим кодом если только 1 вариант


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot