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
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
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