[SOLVED] Plane issue!

Everything related to 3D programming
User avatar
Mijikai
Addict
Addict
Posts: 1360
Joined: Sun Sep 11, 2016 2:17 pm

[SOLVED] Plane issue!

Post by Mijikai »

How can i predict where a plane gets drawn ?
Where is the origin !?

Its not in the center/edge of the plane...


Image

Am i doing something wrong?

Code: Select all


#WINDOW_TITLE     = ""
#WINDOW_WIDTH     = 1000
#WINDOW_HEIGHT    = 600
#WINDOW_ID        = 400
#WINDOW_FLAGS     = #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget
#SCREEN_X         = 10
#SCREEN_Y         = 10
#SCREEN_WIDTH     = 800
#SCREEN_HEIGHT    = 500

Procedure.i NewTexture(Color.i)
  Protected Result.i = CreateTexture(#PB_Any,16,16)
  If Result
    If StartDrawing(TextureOutput(Result))
      DrawingMode(#PB_2DDrawing_Default)
      Box(0,0,16,16,Color)
      StopDrawing()
      ProcedureReturn Result
    EndIf
    FreeTexture(Result)
  EndIf
EndProcedure

Procedure.i CreateScene()
  TEXTURE_Red = NewTexture(#Red)
  MATERIAL_Red = CreateMaterial(#PB_Any,TextureID(TEXTURE_Red))
  
  TEXTURE_Green = NewTexture(#Green)
  MATERIAL_Green = CreateMaterial(#PB_Any,TextureID(TEXTURE_Green))
  
  TEXTURE_Cyan = NewTexture(#Cyan)
  MATERIAL_Cyan = CreateMaterial(#PB_Any,TextureID(TEXTURE_Cyan))
  
  CreateCone(11,3,6,4,1)
  
  CreateEntity(22,MeshID(11),MaterialID(MATERIAL_red))
  MoveEntity(22,50,0,0)
  RotateEntity(22,0,0,-90)
  
  CreateEntity(44,MeshID(11),MaterialID(MATERIAL_Green))
  MoveEntity(44,0,50,0)
  
  CreateEntity(66,MeshID(11),MaterialID(MATERIAL_Cyan))
  MoveEntity(66,0,0,50)
  RotateEntity(66,90,0,0)
  
  CreateLine3D(#PB_Any,0,0,0,#White,50,0,0,#Red)    ;X RIGHT
  CreateLine3D(#PB_Any,0,0,0,#White,0,50,0,#Green)  ;Y TOP
  CreateLine3D(#PB_Any,0,0,0,#White,0,0,50,#Cyan)   ;Z BACK
  
  TEXTURE_Base = NewTexture($AAFAAA)
  MATERIAL_Base = CreateMaterial(#PB_Any,TextureID(TEXTURE_Base))
  
  TEXTURE_Base2 = NewTexture($FAFFAA)
  MATERIAL_Base2 = CreateMaterial(#PB_Any,TextureID(TEXTURE_Base2))
  
  MaterialBlendingMode(MATERIAL_Base,#PB_Material_Color)
  MaterialCullingMode(MATERIAL_Base,#PB_Material_NoCulling)
  MaterialBlendingMode(MATERIAL_Base2,#PB_Material_Color)
  MaterialCullingMode(MATERIAL_Base2,#PB_Material_NoCulling)
  
  
  CreatePlane(1, 20, 20, 1, 1, 0, 0)
  CreateEntity(2,MeshID(1),MaterialID(MATERIAL_Base2),5,0,0)
  RotateEntity(2,90,0,0)
  
  CreatePlane(3, 10, 10, 1, 1, 0, 0)
  CreateEntity(4,MeshID(3),MaterialID(MATERIAL_Base),5,0,0)
  RotateEntity(4,90,0,0)


  CreateCube(7,5)
  CreateEntity(8,MeshID(7),0)
  
  ProcedureReturn #True;Dummy
EndProcedure

Procedure.i InitRender()
  OBJ_Light1 = CreateLight(#PB_Any,RGB(100,100,100), 2000, 10000, 10000)
  OBJ_Light2 = CreateLight(#PB_Any,RGB(100,100,100), 2000, -10000, -1000)
  OBJ_Camera = CreateCamera(#PB_Any,0,0,100,100)
  CameraBackColor(OBJ_Camera,$666666)
  MoveCamera(OBJ_Camera,0,0,200,#PB_Absolute)
  OBJ_Node = CreateNode(#PB_Any,0,0,0)
  AttachNodeObject(OBJ_Node,CameraID(OBJ_Camera))
  RotateNode(OBJ_Node,-20,0,0,#PB_Relative);SET ROTATION
  ProcedureReturn CreateScene()
EndProcedure


Procedure.i Screen()
  Protected Exit.i, Event.i
  If InitEngine3D() And InitSprite() And InitKeyboard()
    If OpenWindow(#WINDOW_ID,#Null,#Null,#WINDOW_WIDTH,#WINDOW_HEIGHT,#WINDOW_TITLE,#WINDOW_FLAGS)
      If OpenWindowedScreen(WindowID(#WINDOW_ID),#SCREEN_X,#SCREEN_Y,#SCREEN_WIDTH,#SCREEN_HEIGHT)
        If InitRender()
          SetFrameRate(60)
          Repeat
            Event = WindowEvent()
            Select Event
              Case #PB_Event_CloseWindow
                Exit = #True
              Default
                SetWindowTitle(#WINDOW_ID,#WINDOW_TITLE + " " + Str(Engine3DStatus(#PB_Engine3D_NbRenderedTriangles)) + " Triangles - " + Str(Engine3DStatus(#PB_Engine3D_CurrentFPS)) + " FPS")
                Sleep_(10)
            EndSelect
            RenderWorld()
            FlipBuffers()
          Until Exit = #True 
        EndIf
        CloseScreen()
      EndIf
      CloseWindow(#WINDOW_ID)
    EndIf
  EndIf
EndProcedure

Screen()]
Last edited by Mijikai on Fri Jun 09, 2017 10:19 pm, edited 1 time in total.
User avatar
Comtois
Addict
Addict
Posts: 1429
Joined: Tue Aug 19, 2003 11:36 am
Location: Doubs - France

Re: [Help] Plane origin bugged?

Post by Comtois »

Where is the origin !? --> the origin is at plane's center

Code: Select all

IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

#CameraSpeed = 1

If InitEngine3D()
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Models", #PB_3DArchive_FileSystem)   
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/fonts", #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Scripts",#PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Packs/desert.zip", #PB_3DArchive_Zip)
    Parse3DScripts()
    
    KeyboardMode(#PB_Keyboard_International) 
    
    
    ;Materials
    ;
    WoodMaterial = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "Wood.jpg")))
    DirtMaterial = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "Dirt.jpg")))
    
    ; Ground
    ;
    MeshPlane = CreatePlane(#PB_Any, 100, 100, 10, 10, 15, 15)
    Ground = CreateEntity(#PB_Any, MeshID(MeshPlane), MaterialID(DirtMaterial))
    RotateEntity(Ground, 90, 0, 0)
    
    
    ; Line
    ;
    CreateLine3D(0,0,0,0,#Red,0,0,50, #Red) ; plane's center
    CreateText3D(0,"CENTER")
    Text3DColor(0,RGBA(255, 0, 0, 255))
    Text3DAlignment(0, #PB_Text3D_HorizontallyCentered)
    
    CreateNode(0, 0, 0, 2)
    AttachNodeObject(0, Text3DID(0))
    ScaleText3D(0, 2, 2, 1)
    
    ; Camera
    ;
    Camera = CreateCamera(#PB_Any, 0, 0, 100, 100)
    MoveCamera(Camera, 0, 10, 120, #PB_Absolute)
    
    ;SkyBox
    ;
    SkyBox("desert07.jpg")
    
    ; Light
    ;
    CreateLight(#PB_Any, RGB(255, 255, 255), 300, 90, -300)
    
    
    AmbientColor(RGB(20, 20, 20))
    
    Repeat
      Screen3DEvents()
      
      If ExamineMouse()
        MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
        MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
      EndIf
      
      If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed
        Else
          KeyX = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed
        Else
          KeyY = 0
        EndIf
        
      EndIf
      
      
      MoveCamera  (Camera, KeyX, 0, KeyY)
      RotateCamera(Camera, MouseY, MouseX, 0, #PB_Relative)
      
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
      
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
    
  EndIf
  
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf

End
Please correct my english
http://purebasic.developpez.com/
User avatar
Samuel
Enthusiast
Enthusiast
Posts: 755
Joined: Sun Jul 29, 2012 10:33 pm
Location: United States

Re: [Help] Plane origin bugged?

Post by Samuel »

Mijikai wrote:

Code: Select all

  CreatePlane(1, 20, 20, 1, 1, 0, 0)
  CreateEntity(2,MeshID(1),MaterialID(MATERIAL_Base2),5,0,0)
  RotateEntity(2,90,0,0)
  
  CreatePlane(3, 10, 10, 1, 1, 0, 0)
  CreateEntity(4,MeshID(3),MaterialID(MATERIAL_Base),5,0,0)
  RotateEntity(4,90,0,0)
Your plane entities are being placed 5 units along the X axis. Which is why they appear to be off-kilter.
User avatar
Mijikai
Addict
Addict
Posts: 1360
Joined: Sun Sep 11, 2016 2:17 pm

Re: [Help] Plane origin bugged?

Post by Mijikai »

Thanks for the quick reply everyone :)
Seems like i was oblivious to the offset in the CreateEntity() call :|
Now i can move on :oops:
Post Reply