PB 5.60 examples

Everything related to 3D programming
User avatar
Comtois
Addict
Addict
Posts: 1429
Joined: Tue Aug 19, 2003 11:36 am
Location: Doubs - France

PB 5.60 examples

Post by Comtois »

SetNodeAnimationKeyFrameRotation() using #PB_Orientation_Quaternion

Need this archiv --> http://herved25.free.fr/sources/magicofstonehengePB.zip

Code: Select all

IncludeFile "Screen3DRequester.pb"

Structure Vector3
  x.f
  y.f
  z.f
EndStructure

If InitEngine3D()
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  InitSound()
  
  If Screen3DRequester()
    
    Add3DArchive("Media", #PB_3DArchive_FileSystem)
    Add3DArchive("Media/fonts", #PB_3DArchive_FileSystem)
    Add3DArchive("Media/materials/programs", #PB_3DArchive_FileSystem)
    Add3DArchive("Media/materials/scripts", #PB_3DArchive_FileSystem)
    Add3DArchive("Media/materials/textures", #PB_3DArchive_FileSystem)
    Add3DArchive("Media/particle", #PB_3DArchive_FileSystem)
    Add3DArchive("Media/packs/models.zip", #PB_3DArchive_Zip)    
    
    Parse3DScripts()
    
    LoadSound(0, "music.wav")
    PlaySound(0,  #PB_Sound_Loop)
    
    ;Set ambient light
    AmbientColor(RGB(255*0.5, 255*0.5,255*0.5))
    
    ;Create a light
    light = CreateLight(#PB_Any, RGB(255, 255, 255), 20, 80, 50)
    

    Mesh = LoadMesh(#PB_Any, "Plane01.mesh")
    ground = CreateEntity(#PB_Any, MeshID(Mesh), #PB_Material_None)
    
    For i=1 To 15
      fileMesh.s = "s" + Str(i) + ".mesh"
      Mesh = LoadMesh(#PB_Any, fileMesh)
      CreateEntity(#PB_Any, MeshID(Mesh), #PB_Material_None)
    Next
        
    
    Mesh = LoadMesh(#PB_Any, "cast1.mesh")
    cast1 = CreateEntity(#PB_Any, MeshID(Mesh), #PB_Material_None)	
    Mesh = LoadMesh(#PB_Any, "pilon.mesh")
    pilon = CreateEntity(#PB_Any, MeshID(Mesh), #PB_Material_None)	
        
    
    GetScriptParticleEmitter(#PB_Any, "PEExamples/stoneh2")
    pSys3 = GetScriptParticleEmitter(#PB_Any, "PEExamples/stoneh2_small")
    pSys4 = GetScriptParticleEmitter(#PB_Any, "PEExamples/stoneh2_small")
    pSys5 = GetScriptParticleEmitter(#PB_Any, "PEExamples/stoneh2_small")
    
    max2ogre.f=0.025
    Define.Vector3 triSpoutPos1, triSpoutPos2, triSpoutPos3
    
    triSpoutPos1\x = -0.084/max2ogre 
    triSpoutPos1\y =  0.354/max2ogre
    triSpoutPos1\z = -7.047/max2ogre
    
    triSpoutPos2\x =  5.872/max2ogre
    triSpoutPos2\y =  0.354/max2ogre
    triSpoutPos2\z =  3.461/max2ogre
    
    triSpoutPos3\x = -5.787/max2ogre
    triSpoutPos3\y =  0.354/max2ogre
    triSpoutPos3\z =  3.351/max2ogre
    
    
    spout_node1=CreateNode(#PB_Any, triSpoutPos1\x, triSpoutPos1\y, triSpoutPos1\z)
    spout_node2=CreateNode(#PB_Any, triSpoutPos2\x, triSpoutPos2\y, triSpoutPos2\z)
    spout_node3=CreateNode(#PB_Any, triSpoutPos3\x, triSpoutPos3\y, triSpoutPos3\z)
    
    
    AttachNodeObject(spout_node1, ParticleEmitterID(pSys3))
    AttachNodeObject(spout_node2, ParticleEmitterID(pSys4))
    AttachNodeObject(spout_node3, ParticleEmitterID(pSys5))
    
    cast1Mesh = LoadMesh(#PB_Any, "cast1.mesh")
    
    Cast3Mat = GetScriptMaterial(#PB_Any, "cast3")
    cast3 = CreateEntity(#PB_Any, MeshID(cast1Mesh), MaterialID(Cast3Mat), 0, 100, 0)
    ScaleEntity(cast3, 5,1,5)
    
    
    Cast4Mat = GetScriptMaterial(#PB_Any, "cast4")
    cast4 = CreateEntity(#PB_Any, MeshID(cast1Mesh), MaterialID(Cast4Mat), 0, 200, 0)
    ScaleEntity(cast4, 2,1,1)
    
    
    castTri1Mat = GetScriptMaterial(#PB_Any, "castTri")
    castTri1 = CreateEntity(#PB_Any, MeshID(cast1Mesh), MaterialID(castTri1Mat), triSpoutPos1\x, triSpoutPos1\y-10, triSpoutPos1\z)
    ScaleEntity(castTri1, 0.5,0.1,0.5)
    
    castTri2 = CreateEntity(#PB_Any, MeshID(cast1Mesh), MaterialID(castTri1Mat), triSpoutPos2\x, triSpoutPos2\y-10, triSpoutPos2\z)
    RotateEntity(castTri2, 0, -90, 0)
    ScaleEntity(castTri2, 0.5,0.1,0.5)
    
    castTri3 = CreateEntity(#PB_Any, MeshID(cast1Mesh), MaterialID(castTri1Mat), triSpoutPos3\x, triSpoutPos3\y-10, triSpoutPos3\z)
    RotateEntity(castTri3, 0, 90, 0)
    ScaleEntity(castTri3, 0.5,0.1,0.5)
    
    
    castsun1 = GetScriptMaterial(#PB_Any, "castsun1")
    castSun2 = CreateEntity(#PB_Any, MeshID(cast1Mesh), MaterialID(castsun1), 0, 10, 0)
    ScaleEntity(castSun2, 1.5, 0.1,1.5)
    
    castsun = GetScriptMaterial(#PB_Any, "castsun")
    For sc=1 To 19
      castSun1 = CreateEntity(#PB_Any, MeshID(cast1Mesh), MaterialID(castsun), 0,40+sc*10,0)
      RotateEntity(castSun1, Random(5) , 0.5, Random(5))
      ScaleEntity(castSun1, 2.5-sc*0.05,0.1,2.5-sc*0.05)
    Next
       
    gorizontMesh = LoadMesh(#PB_Any , "gorizont.mesh")
    gorizont = CreateEntity(#PB_Any, MeshID(gorizontMesh), #PB_Material_None)
    barierMesh = LoadMesh(#PB_Any , "barier.mesh")
    barier = CreateEntity(#PB_Any, MeshID(barierMesh), #PB_Material_None)    
           
    ; create camera
    CamNode = CreateNode(#PB_Any, -244.852,392.682,-357.77)
    Camera = CreateCamera(#PB_Any, 0, 0, 100, 100)
    AttachNodeObject(CamNode, CameraID(Camera)) 
    
    ;-NodeAnimation
    CreateNodeAnimation(0, NodeID(CamNode), (319.382-28.307)*1000, #PB_NodeAnimation_Spline, #PB_NodeAnimation_SphericalRotation)
    
    fr=0;
    
    animDelay.f=1000.0
    timOffset.f=-28.8307*animDelay
        
    key = CreateNodeAnimationKeyFrame(0, animDelay*28.8307+timOffset, -244.852,392.682,-357.77)
    SetNodeAnimationKeyFrameRotation(0, key, -0.0821347,0.909552,0.216516,0.345054, #PB_Orientation_Quaternion)
    key = CreateNodeAnimationKeyFrame(0, animDelay*35.2817+timOffset, -393.737,294.394,-113.343)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.0508652,0.937698,0.155653,-0.306394, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*40.6439+timOffset, -422.293,349.852,173.018)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.201077,0.547927,0.137671,-0.800221, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*49.6474+timOffset, -79.646 ,349.852,560.048)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.294858,0.313268,0.102994,-0.896801, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*58.5187+timOffset, 501.429,267.73,432.065)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.115458,-0.000865597,-0.000100481,-0.993273, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*67.7430+timOffset, 640.836,323.694,-73.3012)
   	SetNodeAnimationKeyFrameRotation(0,  key,0.0523376,-0.79111,-0.0683883,-0.605509, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*82.8461+timOffset, 169.581,523.395,-738.473)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.0488329,-0.940583,-0.298618, -0.153773, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*94.9738+timOffset, -544.202,335.46,-620.324)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.0166631,-0.976055,-0.200973,-0.0808456, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*114.848+timOffset, -1279.63,1060.58,186.159)
   	SetNodeAnimationKeyFrameRotation(0, key, -0.290591,-0.569856,-0.22537,0.734783, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*129.583+timOffset, -892.411,1131.63,999.012)
   	SetNodeAnimationKeyFrameRotation(0, key, -0.232815,-0.47594,-0.132303, 0.837642, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*141.035+timOffset, -404.345,716.693,1474.86)
   	SetNodeAnimationKeyFrameRotation(0, key, -0.191741,-0.370559,-0.0785072,0.905332, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*154.269+timOffset, 528.32,321.039,1093.36)
   	SetNodeAnimationKeyFrameRotation(0, key, -0.24763,0.188184,0.0490821,0.949058, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*167.148+timOffset, 245.522,66.4289,417.204)
   	SetNodeAnimationKeyFrameRotation(0, key, -0.00327889,0.243174,0.000821591,0.969895, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*180.000+timOffset, 74.5456,161.762,229.612)
   	SetNodeAnimationKeyFrameRotation(0, key, -0.37099,0.119602,0.048247,0.919624, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*200.000+timOffset, 99.7407,953.843,310.485)
   	SetNodeAnimationKeyFrameRotation(0, key, -0.560923,0.116455,0.0800779,0.815697, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*213.003+timOffset, 740.743,158.305,165.596)
   	SetNodeAnimationKeyFrameRotation(0, key, -0.0305725,0.884463,0.0582964,0.461686, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*231.324+timOffset, 1889.01,281.073,89.9274)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.00313488,0.690157,-0.00313797,0.723468, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*249.487+timOffset, 2872.93,118.85,-472.164)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.0386955,0.750839,-0.0443189,0.657661, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*264.965+timOffset, 2613.98,169.808,-1362.87)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.0279485,0.855113,-0.0465596,0.515329, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*278.284+timOffset, 2000.71,209.627,-1909.93)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.0271869,0.916301,-0.0634344,0.39415, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*292.262+timOffset, 844.269,282.555,-1766.07)
   	SetNodeAnimationKeyFrameRotation(0, key, 0.00503583,0.973453,-0.0220159, 0.227154, #PB_Orientation_Quaternion)
   	key = CreateNodeAnimationKeyFrame(0, animDelay*308.494+timOffset, 34.4144,291.87,-1023.65) 
   	SetNodeAnimationKeyFrameRotation(0, key, -0.00208207,0.996139,0.023802,0.0827656, #PB_Orientation_Quaternion)
    key = CreateNodeAnimationKeyFrame(0, animDelay*319.382+timOffset, -244.852,392.682,-357.77) 
    SetNodeAnimationKeyFrameRotation(0, key, -0.0821347,0.909552,0.216516, 0.345054, #PB_Orientation_Quaternion)
    
    StartNodeAnimation(0)
    
    Repeat
      Screen3DEvents()
      
      ExamineKeyboard()
      
      AddNodeAnimationTime(0, TimeSinceLastFrame)
         
      TimeSinceLastFrame = 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
Guillot's example : Particle

Code: Select all

;
; ------------------------------------------------------------
;
;   PureBasic - Particle
;
;    (c) Fantaisie Software
;
; ------------------------------------------------------------
;

#CameraSpeed = 1

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

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()
  
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    
    
    
    LoadTexture(0, "dirt.jpg")
    CreateMaterial(0, TextureID(0))
    CreatePlane (0,256,256,1,1,8,8):CreateEntity(0, MeshID(0), MaterialID(0),0,0,0)
    
    LoadTexture(1, "smoke.png")
    CreateMaterial(1, TextureID(1))
    DisableMaterialLighting(1, 1)
    MaterialBlendingMode   (1, #PB_Material_AlphaBlend)
    
    LoadTexture(2, "flare.png")
    CreateMaterial(2, TextureID(2))
    DisableMaterialLighting(2, 1)
    MaterialBlendingMode   (2, #PB_Material_Add)
    
    ;-
    CreateParticleEmitter(1, 0, 0, 0, #PB_Particle_Point, 50, 5, 50)
    ParticleMaterial(1, MaterialID(1))
    ParticleSize(1, 10, 10)
    ParticleColorRange(1, RGB(255,255,0), RGB(255,0,0))
    ParticleColorFader(1, -0.5, -0.5, -0.5, -0.5)
    ParticleEmitterDirection(1, 0, 1, 0)
    ParticleTimeToLive  (1, 2,2)
    ParticleVelocity(1, #PB_Particle_Velocity,20)
    ParticleAcceleration(1, 0.2, 0, 0)
    ParticleEmissionRate(1, 50)
    
    ;-
    CreateParticleEmitter(2, 0, 0, 0, #PB_Particle_Point, -50,0,50)
    ParticleMaterial(2, MaterialID(2))
    ParticleSize (2, 5, 5)
    ParticleColorRange(2, RGB(255,0,0), RGB(0,0,255))
    ParticleEmitterDirection(2, 0, 1, 0)
    ParticleTimeToLive  (2, 2,1)
    ParticleVelocity(2, #PB_Particle_Velocity,80)
    ParticleAcceleration(2, 0, -1, 0)
    ParticleEmissionRate(2, 100)
    
    ;-
    CreateParticleEmitter(3, 256, 256, 30, #PB_Particle_Point, 0,30, 0)
    ParticleMaterial    (3, MaterialID(2))
    ParticleSize        (3, 2, 2)
    ParticleEmitterDirection(3, 0, 1, 0)
    ParticleTimeToLive  (3, 2,4)
    ParticleVelocity(3, #PB_Particle_Velocity,-10)
    ParticleEmissionRate(3, 50)
    
    ;-
    CreateParticleEmitter(4, 0, 0, 0, #PB_Particle_Point, -50, 5,-50)
    ParticleMaterial(4, MaterialID(1))
    ParticleSize(4, 5, 5)
    ParticleEmissionRate(4, 50)
    ParticleColorRange(4, RGB(0,255,0), RGB(0,0,255))
    ParticleColorFader(4, 1, 2, 2, -1)
    ParticleTimeToLive  (4, 1, 1)
    ParticleVelocity(4, #PB_Particle_Velocity,35)
    ParticleEmitterAngle(4,5)
    ParticleAcceleration(4, -0.5, 0, 0)
    ParticleEmitterDirection(4, 0, 1, 0)
    
    ;-
    CreateParticleEmitter(5, 0, 0, 0, #PB_Particle_Point, -50, 5, -50)
    ParticleMaterial(5, MaterialID(1))
    ParticleSize (5, 4, 4)
    ParticleEmissionRate(5, 100)
    ParticleColorRange(5, RGB(0,0,255), RGB(0,0,200))
    ParticleColorFader(5, -1, -1, -1, -1)
    ParticleTimeToLive (5, 1, 1)
    ParticleVelocity(5, #PB_Particle_Velocity, 30)
    ParticleEmitterAngle(5, 0)
    ParticleEmitterDirection(5, 0, 1, 0)
    
    ;- Camera
    CreateCamera(0, 0, 0, 100, 100)
    MoveCamera(0, 100, 40, 100, #PB_Absolute)
    CameraLookAt(0, 0, 0, 0)
    
    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
      
      angle+4
      
      MoveParticleEmitter(5, Sin(Radian(angle))*10, 5, Cos(Radian(angle))*10, #PB_Absolute)
      
      RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
      MoveCamera  (0, KeyX, 0, KeyY)
      
      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
Guillot's example : Material

Code: Select all

;
; ------------------------------------------------------------
;
;   PureBasic - Material
;
;    (c) Fantaisie Software
;
; ------------------------------------------------------------
;

#CameraSpeed = 1

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

Define.f KeyX, KeyY, MouseX, MouseY 

If InitEngine3D()
  
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
  Parse3DScripts()
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
        
    LoadTexture(0, "grass2.png")
    LoadTexture(1, "wood.jpg")
    LoadTexture(2, "dirt.jpg")
    LoadTexture(3, "spheremap.png")
    
    CreateMaterial(0, TextureID(0)):ScaleMaterial(0,0.25,0.25) : MaterialCullingMode(0,#PB_Material_NoCulling)
    CreateMaterial(1, TextureID(0)):ScaleMaterial(1,0.5,0.5) : MaterialCullingMode(1,#PB_Material_NoCulling)
    CreateMaterial(2, TextureID(1)):AddMaterialLayer(2,TextureID(3),#PB_Material_Add)
    CreateMaterial(3, TextureID(2)):ScaleMaterial(3,0.1,0.1):AddMaterialLayer(3,TextureID(3),#PB_Material_Add)
    
    SetMaterialAttribute(0,#PB_Material_AlphaReject,-160,0)
    SetMaterialAttribute(1,#PB_Material_AlphaReject,128,0)
    SetMaterialAttribute(2,#PB_Material_EnvironmentMap,#PB_Material_PlanarMap,1)
    SetMaterialAttribute(3,#PB_Material_EnvironmentMap,#PB_Material_CurvedMap,1)
    
    CreateSphere(0, 0.75,32,32)
    CreateCube(1, 1)
    CreateTorus(3,0.5,0.2,32,32)
    
    CreateEntity(0, MeshID(0), MaterialID(0),-1.5,0,0)
    CreateEntity(1, MeshID(1), MaterialID(1),1.5,0,0)
    CreateEntity(2, MeshID(1), MaterialID(2),0,0,-1.5)
    CreateEntity(3, MeshID(3), MaterialID(3),0,0,1.5)
    
    CreateLight(0, RGB(255,255,255), 50, 50, 50)
    
    CreateCamera(0, 0, 0, 100, 100)
    MoveCamera(0, 5, 10, 5)
    CameraLookAt(0, 0, 0, 0)
    CameraBackColor(0, 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
            
      RotateEntity(0,0.1,0.3,0.2,#PB_Relative)
      RotateEntity(1,0.1,0.3,0.2,#PB_Relative)
      RotateEntity(2,0.1,0.3,0.2,#PB_Relative)
      RotateEntity(3,0.1,0.3,0.2,#PB_Relative)
      
      RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
      MoveCamera  (0, KeyX, 0, KeyY)
      
      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
DK_PETER
Addict
Addict
Posts: 898
Joined: Sat Feb 19, 2011 10:06 am
Location: Denmark
Contact:

Re: PB 5.60 examples

Post by DK_PETER »

VERY nice examples!
Thank you. :)
Current configurations:
Ubuntu 20.04/64 bit - Window 10 64 bit
Intel 6800K, GeForce Gtx 1060, 32 gb ram.
Amd Ryzen 9 5950X, GeForce 3070, 128 gb ram.
User avatar
falsam
Enthusiast
Enthusiast
Posts: 630
Joined: Wed Sep 21, 2011 9:11 am
Location: France
Contact:

Re: PB 5.60 examples

Post by falsam »

Comtois I love your code. Thanks also to Guillot for these codes.

➽ Windows 11 64-bit - PB 6.0 x64 - AMD Ryzen 7 - NVIDIA GeForce GTX 1650 Ti

Sorry for my bad english and the Dunning–Kruger effect.
applePi
Addict
Addict
Posts: 1404
Joined: Sun Jun 25, 2006 7:28 pm

Re: PB 5.60 examples

Post by applePi »

Thanks Comtois for the examples, i also like the particles example.
about 2 years ago i wish there is something like the new #PB_Material_AlphaReject instead of loading it from a script file, now we can use it easily inside the code
here is the example i have posted before with the help then from Samuel recoded with #PB_Material_AlphaReject. it should cast a shadow through the grass on the ground
Image

Code: Select all

#CameraSpeed = 1

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()

  InitSprite()
  InitKeyboard()
  InitMouse()
  ExamineDesktops()
  
DeskWid=DesktopWidth(0)
DeskHei=DesktopHeight(0)

Add3DArchive(".", #PB_3DArchive_FileSystem)
Add3DArchive(".", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)

 If OpenWindow(0, 0, 0, DeskWid, DeskHei, "Alpha to Shadow ..... use mouse/arrows to move/rotate the cam", #PB_Window_ScreenCentered)
  If OpenWindowedScreen(WindowID(0), 0, 0, DeskWid, DeskHei, 0, 0, 0)
    
    ;Parse3DScripts()
    
    Tex  = LoadTexture(#PB_Any, "grass2.png")
    Mat = CreateMaterial(#PB_Any, TextureID(Tex))
    
    MaterialBlendingMode(Mat, #PB_Material_AlphaBlend)
    MaterialCullingMode(Mat, #PB_Material_NoCulling  )
    SetMaterialAttribute(Mat, #PB_Material_DepthWrite ,1)
    SetMaterialAttribute(Mat, #PB_Material_AlphaReject, 128)

    BoxMesh=CreateCube(#PB_Any,40)
    BoxEntity=CreateEntity(#PB_Any,MeshID(BoxMesh),MaterialID(Mat),0,0,0)
    
    
    PlaneTexture=CreateTexture(#PB_Any,32,32)
    StartDrawing(TextureOutput(PlaneTexture))
      Box(0,0,32,32,RGB(255,255,255))
    StopDrawing()
    
    PlaneMaterial=CreateMaterial(#PB_Any, TextureID(PlaneTexture))
    
    PlaneMesh=CreatePlane(#PB_Any,10000,10000,10,10,10,10)
    PlaneEntity=CreateEntity(#PB_Any,MeshID(PlaneMesh),MaterialID(PlaneMaterial),0,-40,0)
    EntityRenderMode(PlaneEntity,0)
    
    CreateCamera(0, 0, 0, 100, 100)
    MoveCamera(0, -50, 0, 120, #PB_Absolute)
    CameraBackColor(0, RGB(255,255,0))

    CameraLookAt(0,0,-10,0)

    CreateLight(0,RGB(100,100,100),0,100,0)
    
    WorldShadows(#PB_Shadow_TextureAdditive, 0, RGB(127, 127, 127), 4096)
    
    Repeat
      Repeat
        ev = WindowEvent()
        Until ev=0
            
      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
            
      RotateEntity(BoxEntity,0,0.5,0,#PB_Relative)
      RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
      MoveCamera(0, KeyX, 0, KeyY)

    
      RenderWorld()

      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) 
  EndIf
 EndIf
Else
  MessageRequester("Error", "The 3D Engine can't be initialized", 0)
EndIf
  
End
User avatar
Kwai chang caine
Always Here
Always Here
Posts: 5345
Joined: Sun Nov 05, 2006 11:42 pm
Location: Lyon - France

Re: PB 5.60 examples

Post by Kwai chang caine »

The 3D never finish to amaze us !!!! :shock:
Thanks COMTOIS for sharing 8)
ImageThe happiness is a road...
Not a destination
Post Reply