ogre.rb 0.1-i386-mswin32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +79 -0
- data/Rakefile +291 -0
- data/doc_src/ogre.rb +246 -0
- data/doc_src/ois.rb +67 -0
- data/lib/application.rb +146 -0
- data/lib/application_frame_listener.rb +302 -0
- data/lib/application_loading_bar.rb +115 -0
- data/lib/constants.rb +51 -0
- data/lib/method_fixes.rb +42 -0
- data/lib/ogre.dll +0 -0
- data/lib/ruby_ois.dll +0 -0
- data/ogre.rb +25 -0
- data/platform.rb +23 -0
- data/samples/Ogre.log +279 -0
- data/samples/bsp.rb +76 -0
- data/samples/cg.dll +0 -0
- data/samples/grass.rb +325 -0
- data/samples/js3250.dll +0 -0
- data/samples/lighting.rb +138 -0
- data/samples/media/materials/programs/Grass.cg +30 -0
- data/samples/media/materials/programs/OffsetMapping.cg +97 -0
- data/samples/media/materials/programs/OffsetMapping.hlsl +135 -0
- data/samples/media/materials/programs/OffsetMappingFp.glsl +69 -0
- data/samples/media/materials/programs/OffsetMappingVp.glsl +54 -0
- data/samples/media/materials/programs/OffsetMapping_specular.asm +44 -0
- data/samples/media/materials/scripts/CloudySky.material +17 -0
- data/samples/media/materials/scripts/CubeMapping.material +34 -0
- data/samples/media/materials/scripts/Flare.material +17 -0
- data/samples/media/materials/scripts/Grass.material +63 -0
- data/samples/media/materials/scripts/Knot.material +14 -0
- data/samples/media/materials/scripts/MorningSkyBox.material +17 -0
- data/samples/media/materials/scripts/Offset.material +124 -0
- data/samples/media/materials/scripts/Ogre.material +119 -0
- data/samples/media/materials/scripts/RZR-002.material +15 -0
- data/samples/media/materials/scripts/Razor.material +14 -0
- data/samples/media/materials/scripts/Ribbon.material +19 -0
- data/samples/media/materials/scripts/RustySteel.material +14 -0
- data/samples/media/materials/scripts/SpaceSkyBox.material +17 -0
- data/samples/media/materials/scripts/SpaceSkyPlane.material +17 -0
- data/samples/media/materials/scripts/TextureEffects.material +15 -0
- data/samples/media/materials/scripts/dragon.material +42 -0
- data/samples/media/materials/scripts/smoke.material +18 -0
- data/samples/media/materials/textures/GreenSkin.jpg +0 -0
- data/samples/media/materials/textures/MtlPlat2.jpg +0 -0
- data/samples/media/materials/textures/RZR-002.png +0 -0
- data/samples/media/materials/textures/RustedMetal.jpg +0 -0
- data/samples/media/materials/textures/RustySteel.jpg +0 -0
- data/samples/media/materials/textures/Thumbs.db +0 -0
- data/samples/media/materials/textures/Water02.jpg +0 -0
- data/samples/media/materials/textures/WeirdEye.png +0 -0
- data/samples/media/materials/textures/clouds.jpg +0 -0
- data/samples/media/materials/textures/cursor.png +0 -0
- data/samples/media/materials/textures/dirt01.jpg +0 -0
- data/samples/media/materials/textures/flare.png +0 -0
- data/samples/media/materials/textures/gras_02.png +0 -0
- data/samples/media/materials/textures/grass_1024.jpg +0 -0
- data/samples/media/materials/textures/ogreborder.png +0 -0
- data/samples/media/materials/textures/ogreborderUp.png +0 -0
- data/samples/media/materials/textures/ribbonband.png +0 -0
- data/samples/media/materials/textures/rockwall.tga +0 -0
- data/samples/media/materials/textures/rockwall_NH.tga +0 -0
- data/samples/media/materials/textures/smoke.png +0 -0
- data/samples/media/materials/textures/smokecolors.png +0 -0
- data/samples/media/materials/textures/spacesky.jpg +0 -0
- data/samples/media/materials/textures/spheremap.png +0 -0
- data/samples/media/materials/textures/texmap2.jpg +0 -0
- data/samples/media/models/RZR-002.mesh +0 -0
- data/samples/media/models/geosphere4500.mesh +0 -0
- data/samples/media/models/geosphere8000.mesh +0 -0
- data/samples/media/models/knot.mesh +0 -0
- data/samples/media/models/ogrehead.mesh +0 -0
- data/samples/media/models/razor.mesh +0 -0
- data/samples/media/models/sphere.mesh +0 -0
- data/samples/media/overlays/CubeMapping.overlay +139 -0
- data/samples/media/packs/OgreCore.zip +0 -0
- data/samples/media/packs/chiropteraDM.pk3 +0 -0
- data/samples/media/packs/chiropteraDM.txt +99 -0
- data/samples/media/packs/cubemap.zip +0 -0
- data/samples/media/packs/cubemapsJS.zip +0 -0
- data/samples/media/packs/dragon.zip +0 -0
- data/samples/media/packs/skybox.zip +0 -0
- data/samples/media/particles/smoke.particle +43 -0
- data/samples/media.cfg +22 -0
- data/samples/ogre.cfg +19 -0
- data/samples/plugins.cfg +12 -0
- data/samples/quake3settings.cfg +2 -0
- data/samples/render_to_texture.rb +161 -0
- data/samples/resources.cfg +16 -0
- data/samples/sky_box.rb +107 -0
- data/samples/sky_dome.rb +86 -0
- data/samples/sky_plane.rb +27 -0
- data/samples/smoke.rb +23 -0
- data/samples/work/cube_mapping.rb +686 -0
- metadata +149 -0
@@ -0,0 +1,139 @@
|
|
1
|
+
CubeMappingOverlay
|
2
|
+
{
|
3
|
+
zorder 500
|
4
|
+
// Stats block
|
5
|
+
container BorderPanel(Core/CubeMappingPanel)
|
6
|
+
{
|
7
|
+
metrics_mode pixels
|
8
|
+
vert_align top
|
9
|
+
left 5
|
10
|
+
top 5
|
11
|
+
width 250
|
12
|
+
height 130
|
13
|
+
material Core/StatsBlockCenter
|
14
|
+
border_size 1 1 1 1
|
15
|
+
border_material Core/StatsBlockBorder
|
16
|
+
border_topleft_uv 0.0000 1.0000 0.0039 0.9961
|
17
|
+
border_top_uv 0.0039 1.0000 0.9961 0.9961
|
18
|
+
border_topright_uv 0.9961 1.0000 1.0000 0.9961
|
19
|
+
border_left_uv 0.0000 0.9961 0.0039 0.0039
|
20
|
+
border_right_uv 0.9961 0.9961 1.0000 0.0039
|
21
|
+
border_bottomleft_uv 0.0000 0.0039 0.0039 0.0000
|
22
|
+
border_bottom_uv 0.0039 0.0039 0.9961 0.0000
|
23
|
+
border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
|
24
|
+
|
25
|
+
element TextArea(CubeMapping/Displacement)
|
26
|
+
{
|
27
|
+
metrics_mode pixels
|
28
|
+
left 5
|
29
|
+
top 5
|
30
|
+
width 90
|
31
|
+
height 30
|
32
|
+
font_name BlueHighway
|
33
|
+
char_height 16
|
34
|
+
caption [1/2] Displacement:
|
35
|
+
colour_top 0.5 0.7 0.5
|
36
|
+
colour_bottom 0.3 0.5 0.3
|
37
|
+
}
|
38
|
+
|
39
|
+
element TextArea(CubeMapping/Density)
|
40
|
+
{
|
41
|
+
metrics_mode pixels
|
42
|
+
left 5
|
43
|
+
top 20
|
44
|
+
width 90
|
45
|
+
height 30
|
46
|
+
font_name BlueHighway
|
47
|
+
char_height 16
|
48
|
+
caption [3/4] Noise density:
|
49
|
+
colour_top 0.5 0.7 0.5
|
50
|
+
colour_bottom 0.3 0.5 0.3
|
51
|
+
}
|
52
|
+
|
53
|
+
element TextArea(CubeMapping/TimeDensity)
|
54
|
+
{
|
55
|
+
metrics_mode pixels
|
56
|
+
left 5
|
57
|
+
top 35
|
58
|
+
width 90
|
59
|
+
height 30
|
60
|
+
font_name BlueHighway
|
61
|
+
char_height 16
|
62
|
+
caption [5/6] Time density:
|
63
|
+
colour_top 0.5 0.7 0.5
|
64
|
+
colour_bottom 0.3 0.5 0.3
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
element TextArea(CubeMapping/Noise)
|
69
|
+
{
|
70
|
+
metrics_mode pixels
|
71
|
+
left 5
|
72
|
+
top 50
|
73
|
+
width 90
|
74
|
+
height 30
|
75
|
+
font_name BlueHighway
|
76
|
+
char_height 16
|
77
|
+
caption [N] Noise: _not_set_
|
78
|
+
colour_top 0.5 0.7 0.5
|
79
|
+
colour_bottom 0.3 0.5 0.3
|
80
|
+
}
|
81
|
+
|
82
|
+
element TextArea(CubeMapping/Material)
|
83
|
+
{
|
84
|
+
metrics_mode pixels
|
85
|
+
left 5
|
86
|
+
top 65
|
87
|
+
width 90
|
88
|
+
height 30
|
89
|
+
font_name BlueHighway
|
90
|
+
char_height 16
|
91
|
+
caption [M] Material: *UNIMPLEMENTED*
|
92
|
+
colour_top 0.5 0.7 0.5
|
93
|
+
colour_bottom 0.3 0.5 0.3
|
94
|
+
}
|
95
|
+
|
96
|
+
element TextArea(CubeMapping/Object)
|
97
|
+
{
|
98
|
+
metrics_mode pixels
|
99
|
+
left 5
|
100
|
+
top 80
|
101
|
+
width 90
|
102
|
+
height 30
|
103
|
+
font_name BlueHighway
|
104
|
+
char_height 16
|
105
|
+
caption [O] Object:
|
106
|
+
colour_top 0.5 0.7 0.5
|
107
|
+
colour_bottom 0.3 0.5 0.3
|
108
|
+
}
|
109
|
+
|
110
|
+
element TextArea(CubeMapping/CubeMap)
|
111
|
+
{
|
112
|
+
metrics_mode pixels
|
113
|
+
left 5
|
114
|
+
top 95
|
115
|
+
width 90
|
116
|
+
height 30
|
117
|
+
font_name BlueHighway
|
118
|
+
char_height 16
|
119
|
+
caption [C] CubeMap:
|
120
|
+
colour_top 0.5 0.7 0.5
|
121
|
+
colour_bottom 0.3 0.5 0.3
|
122
|
+
}
|
123
|
+
|
124
|
+
element TextArea(CubeMapping/Random)
|
125
|
+
{
|
126
|
+
metrics_mode pixels
|
127
|
+
left 5
|
128
|
+
top 110
|
129
|
+
width 90
|
130
|
+
height 30
|
131
|
+
font_name BlueHighway
|
132
|
+
char_height 16
|
133
|
+
caption [SPACE] Go random!
|
134
|
+
colour_top 0.5 0.7 0.5
|
135
|
+
colour_bottom 0.3 0.5 0.3
|
136
|
+
}
|
137
|
+
|
138
|
+
}
|
139
|
+
}
|
Binary file
|
Binary file
|
@@ -0,0 +1,99 @@
|
|
1
|
+
date: September 17th 2001.
|
2
|
+
Quake3Arena DM level.
|
3
|
+
|
4
|
+
====================================================
|
5
|
+
title: ChiropteraDM
|
6
|
+
file: ChiropteraDM.pk3
|
7
|
+
|
8
|
+
authors: Alcatraz / Nunuk / Sock
|
9
|
+
|
10
|
+
Alcatraz alcatraz@planetquake.com
|
11
|
+
http://www.planetquake.com/bighouse
|
12
|
+
Nunuk: nunuk@planetquake.com
|
13
|
+
http://www.planetquake.com/nunuk
|
14
|
+
Sock: sock@planetquake.com
|
15
|
+
http://www.planetquake.com/simland
|
16
|
+
====================================================
|
17
|
+
Components
|
18
|
+
|
19
|
+
Architecture: Nunuk
|
20
|
+
Gameplay: Alcatraz
|
21
|
+
Textures: Sock / Arnaud "pikouze" barros / Nunuk
|
22
|
+
|
23
|
+
====================================================
|
24
|
+
Play information
|
25
|
+
|
26
|
+
tourney: yes
|
27
|
+
deathmatch: 2-6
|
28
|
+
Bot File (aas): yes (Optimized)
|
29
|
+
|
30
|
+
how to play place chiropteraDM.pk3 in your
|
31
|
+
/Quake III Arena/baseq3/ folder
|
32
|
+
start quake3 Arena
|
33
|
+
hit ~
|
34
|
+
type /map chiropteraDM
|
35
|
+
type /addbot <botname> <skill>
|
36
|
+
hit ~ (to clear the console)
|
37
|
+
|
38
|
+
Note: If the map does not start automatically after loading then make
|
39
|
+
sure you have the SV_PURE variable set to 0. I also included an arena
|
40
|
+
file in the pk3 file so that it can be loaded from the menus.
|
41
|
+
|
42
|
+
====================================================
|
43
|
+
Construction
|
44
|
+
|
45
|
+
editor: Q3Radiant 197 by Id Software
|
46
|
+
build time: Original Map : 3 months, New version : 1 month
|
47
|
+
build version: 6(F)
|
48
|
+
|
49
|
+
====================================================
|
50
|
+
New Beta testers: Nunuk, Ttimo, NakedApe, Shallow[BAP]
|
51
|
+
|
52
|
+
Thanks from Sock:
|
53
|
+
|
54
|
+
Ttimo : for advice and testing.
|
55
|
+
NakedApe : for advice on TA items and testing.
|
56
|
+
alcatraz : for taking time on the level, and for his item placement.
|
57
|
+
Zed the best gf ever :P
|
58
|
+
|
59
|
+
Additional thanks from Nunuk:
|
60
|
+
|
61
|
+
my wife lorene. for her patience.
|
62
|
+
my son arthur.(stop slapping dad's keyboard!)
|
63
|
+
for advice and testing : nanospawn, bal, sock, shod, ttimo, spog.
|
64
|
+
auhsan - for inspiration :o)
|
65
|
+
th - too bad for the title, it will be for the next map.
|
66
|
+
just for being there : lunaran, grindspire, friction, and all at TF.
|
67
|
+
cool_ber - for being cool :>
|
68
|
+
ptit benj - always there for cool advices
|
69
|
+
bengal - for his awesome artwork
|
70
|
+
pappy-r, will, ash, and staff, @ planetquake
|
71
|
+
all the guys at qmap and terrafusion
|
72
|
+
ohz, shod and fff - for pimping and for always reminding me that i'll
|
73
|
+
become a real mapper when i'll stop doing these crappy space maps .... :oD
|
74
|
+
www.quakexpert.com
|
75
|
+
darkworks
|
76
|
+
yan "la crampe" - the only "dm17sucks" dude that passes at
|
77
|
+
least one hour a day playing in it.
|
78
|
+
arnaud "pikouse" - for allowing me to modify his own texes.
|
79
|
+
roland "poz_kak"
|
80
|
+
|
81
|
+
|
82
|
+
Thanx to all the other people that i could have forgot. ;)
|
83
|
+
|
84
|
+
====================================================
|
85
|
+
Distribution / Copyright / Permissions
|
86
|
+
|
87
|
+
Copyright (c) 2001 sock, sock@planetquake.com
|
88
|
+
All rights reserved.
|
89
|
+
|
90
|
+
Quake III Arena is a registered trademark of
|
91
|
+
id Software, Inc.
|
92
|
+
|
93
|
+
This level may be electronically distributed only at
|
94
|
+
NO CHARGE to the recipient in its current state, MUST
|
95
|
+
include this .txt file, and may NOT be modified IN
|
96
|
+
ANY WAY. UNDER NO CIRCUMSTANCES IS THIS LEVEL TO BE
|
97
|
+
DISTRIBUTED ON CD-ROM WITHOUT PRIOR WRITTEN PERMISSION.
|
98
|
+
|
99
|
+
====================================================
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,43 @@
|
|
1
|
+
// Example particle systems
|
2
|
+
|
3
|
+
// smoke
|
4
|
+
Smoke
|
5
|
+
{
|
6
|
+
material Smoke
|
7
|
+
particle_width 55
|
8
|
+
particle_height 55
|
9
|
+
cull_each true
|
10
|
+
quota 500
|
11
|
+
billboard_type point
|
12
|
+
sorted true
|
13
|
+
|
14
|
+
// Area emitter
|
15
|
+
emitter Point
|
16
|
+
{
|
17
|
+
angle 11
|
18
|
+
emission_rate 15
|
19
|
+
time_to_live 4
|
20
|
+
direction 0 1 0
|
21
|
+
velocity_min 150
|
22
|
+
velocity_max 240
|
23
|
+
}
|
24
|
+
|
25
|
+
affector ColourImage
|
26
|
+
{
|
27
|
+
image smokecolors.png
|
28
|
+
}
|
29
|
+
|
30
|
+
affector Rotator
|
31
|
+
{
|
32
|
+
rotation_range_start 0
|
33
|
+
rotation_range_end 360
|
34
|
+
rotation_speed_range_start -60
|
35
|
+
rotation_speed_range_end 200
|
36
|
+
}
|
37
|
+
|
38
|
+
affector Scaler
|
39
|
+
{
|
40
|
+
rate 100
|
41
|
+
}
|
42
|
+
|
43
|
+
}
|
data/samples/media.cfg
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Mesh=ogrehead.mesh
|
2
|
+
# missing material
|
3
|
+
#Mesh=geosphere4500.mesh
|
4
|
+
# works but crashes (seg fault)
|
5
|
+
Mesh=razor.mesh
|
6
|
+
# works but crashes (seg fault)
|
7
|
+
Mesh=knot.mesh
|
8
|
+
# works but crashes (seg fault)
|
9
|
+
Mesh=RZR-002.mesh
|
10
|
+
# missing material
|
11
|
+
#Mesh=geosphere8000.mesh
|
12
|
+
|
13
|
+
Mesh=sphere.mesh
|
14
|
+
|
15
|
+
CubeMap=cubescene.jpg
|
16
|
+
CubeMap=early_morning.jpg
|
17
|
+
CubeMap=cubemap.jpg
|
18
|
+
CubeMap=morning.jpg
|
19
|
+
CubeMap=cloudy_noon.jpg
|
20
|
+
CubeMap=evening.jpg
|
21
|
+
CubeMap=stormy.jpg
|
22
|
+
CubeMap=stevecube.jpg
|
data/samples/ogre.cfg
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Render System=Direct3D9 Rendering Subsystem
|
2
|
+
|
3
|
+
[OpenGL Rendering Subsystem]
|
4
|
+
Colour Depth=32
|
5
|
+
Display Frequency=N/A
|
6
|
+
FSAA=0
|
7
|
+
Full Screen=No
|
8
|
+
RTT Preferred Mode=FBO
|
9
|
+
VSync=No
|
10
|
+
Video Mode=1024 x 768
|
11
|
+
|
12
|
+
[Direct3D9 Rendering Subsystem]
|
13
|
+
Allow NVPerfHUD=No
|
14
|
+
Anti aliasing=NonMaskable 4
|
15
|
+
Floating-point mode=Fastest
|
16
|
+
Full Screen=No
|
17
|
+
Rendering Device=NVIDIA GeForce 6800 Series GPU
|
18
|
+
VSync=No
|
19
|
+
Video Mode=1024 x 768 @ 32-bit colour
|
data/samples/plugins.cfg
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# Defines plugins to load
|
2
|
+
|
3
|
+
# Define plugin folder
|
4
|
+
PluginFolder=D:\Programming\engines\Ogre1.4.1SDK\bin\release
|
5
|
+
#PluginFolder=/usr/local/lib/OGRE/
|
6
|
+
|
7
|
+
Plugin=RenderSystem_GL
|
8
|
+
Plugin=RenderSystem_Direct3D9
|
9
|
+
Plugin=Plugin_OctreeSceneManager
|
10
|
+
Plugin=Plugin_ParticleFX
|
11
|
+
Plugin=Plugin_BSPSceneManager
|
12
|
+
Plugin=Plugin_CgProgramManager
|
@@ -0,0 +1,161 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
$: << File.dirname(__FILE__) + "/.."
|
4
|
+
require 'ogre'
|
5
|
+
require 'application'
|
6
|
+
include Ogre
|
7
|
+
|
8
|
+
class RenderToTextureListener < ApplicationFrameListener
|
9
|
+
def initialize(root, window, cam, reflect_cam, plane)
|
10
|
+
super(root, window, cam)
|
11
|
+
@reflect_cam = reflect_cam
|
12
|
+
@plane = plane
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
def frame_started(event)
|
17
|
+
return false unless super(event)
|
18
|
+
|
19
|
+
#GC.start
|
20
|
+
|
21
|
+
# Update reflection camera
|
22
|
+
@reflect_cam.set_orientation(camera.get_orientation)
|
23
|
+
@reflect_cam.set_position(camera.get_position)
|
24
|
+
|
25
|
+
# Rotate the plane
|
26
|
+
@plane.yaw(Degree.new(30 * event.time_since_last_frame), Node::TS_PARENT)
|
27
|
+
|
28
|
+
true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Is this class really needed? Not using and the demo looks fine
|
33
|
+
class RTTRenderTargetListener < RenderTargetListener
|
34
|
+
def initialize(plane_entity)
|
35
|
+
super()
|
36
|
+
@plane = plane_entity
|
37
|
+
end
|
38
|
+
|
39
|
+
def pre_render_target_update(event)
|
40
|
+
@plane.set_visible(false)
|
41
|
+
end
|
42
|
+
|
43
|
+
def post_render_target_update(event)
|
44
|
+
@plane.set_visible(true)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
class RenderToTextureApplication < Application
|
49
|
+
|
50
|
+
def create_scene
|
51
|
+
scene_manager.set_ambient_light(Ogre::ColourValue.new(0.2, 0.2, 0.2))
|
52
|
+
scene_manager.set_sky_box(true, "MorningSkyBox")
|
53
|
+
|
54
|
+
light = scene_manager.create_light("MainLight")
|
55
|
+
light.set_type(Light::LT_DIRECTIONAL)
|
56
|
+
|
57
|
+
dir = Vector3.new(0.5, -1, 0)
|
58
|
+
dir.normalise!
|
59
|
+
|
60
|
+
light.set_direction(dir)
|
61
|
+
light.set_diffuse_colour(1.0, 1.0, 0.8)
|
62
|
+
light.set_specular_colour(1.0, 1.0, 1.0)
|
63
|
+
|
64
|
+
@plane = MovablePlane.new("ReflectPlane")
|
65
|
+
@plane.d = 0
|
66
|
+
@plane.normal = Vector3.UNIT_Y
|
67
|
+
|
68
|
+
MeshManager.instance.create_plane("ReflectionPlane",
|
69
|
+
ResourceGroupManager.DEFAULT_RESOURCE_GROUP_NAME,
|
70
|
+
@plane, 2000, 2000,
|
71
|
+
1, 1, true, 1, 1, 1, Vector3.UNIT_Z)
|
72
|
+
|
73
|
+
@plane_entity = scene_manager.create_entity("Plane", "ReflectionPlane")
|
74
|
+
|
75
|
+
knot_entity = scene_manager.create_entity("Knot", "knot.mesh")
|
76
|
+
knot_entity.set_material_name("TextureEffect2")
|
77
|
+
|
78
|
+
ogre_head = scene_manager.create_entity("Head", "ogrehead.mesh")
|
79
|
+
|
80
|
+
root = scene_manager.root_scene_node
|
81
|
+
|
82
|
+
# Setting up the plane in the scene
|
83
|
+
@plane_node = root.create_child_scene_node
|
84
|
+
@plane_node.attach_object(@plane_entity)
|
85
|
+
@plane_node.attach_object(@plane)
|
86
|
+
@plane_node.translate(0, -10, 0)
|
87
|
+
|
88
|
+
# Tilt cause it's cool
|
89
|
+
@plane_node.roll(Degree.new(5))
|
90
|
+
|
91
|
+
root.create_child_scene_node("Head").attach_object(ogre_head)
|
92
|
+
|
93
|
+
texture = TextureManager.instance.create_manual("RttTex",
|
94
|
+
ResourceGroupManager.DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D,
|
95
|
+
512, 512, 1, -1, PF_R8G8B8, TU_RENDERTARGET)
|
96
|
+
|
97
|
+
target = texture.get_buffer.get_render_target
|
98
|
+
|
99
|
+
@reflect_cam = scene_manager.create_camera("ReflectCam")
|
100
|
+
@reflect_cam.set_near_clip_distance(camera.get_near_clip_distance)
|
101
|
+
@reflect_cam.set_far_clip_distance(camera.get_far_clip_distance)
|
102
|
+
|
103
|
+
# Make sure these are floats, otherwise we get a much smaller aspect ratio than expected
|
104
|
+
@reflect_cam.set_aspect_ratio(
|
105
|
+
window.get_viewport(0).get_actual_width * 1.0 / window.get_viewport(0).get_actual_height * 1.0)
|
106
|
+
|
107
|
+
viewport = target.add_viewport(@reflect_cam)
|
108
|
+
viewport.set_clear_every_frame(true)
|
109
|
+
viewport.set_background_colour(ColourValue.Black)
|
110
|
+
|
111
|
+
mat = MaterialManager.instance.create("RttMat",
|
112
|
+
ResourceGroupManager.DEFAULT_RESOURCE_GROUP_NAME)
|
113
|
+
|
114
|
+
|
115
|
+
mat.get_technique(0).get_pass(0).create_texture_unit_state("RustedMetal.jpg")
|
116
|
+
tex_unit_state = mat.get_technique(0).get_pass(0).create_texture_unit_state("RttTex")
|
117
|
+
tex_unit_state.set_colour_operation_ex(LBX_BLEND_MANUAL, LBS_TEXTURE, LBS_CURRENT,
|
118
|
+
ColourValue.White, ColourValue.White, 0.25)
|
119
|
+
|
120
|
+
tex_unit_state.set_texture_addressing_mode(TextureUnitState::TAM_CLAMP)
|
121
|
+
tex_unit_state.set_projective_texturing(true, @reflect_cam)
|
122
|
+
|
123
|
+
#puts "", "Registering our listener"
|
124
|
+
#@rt_listener = RTTRenderTargetListener.new(@plane_entity)
|
125
|
+
#target.add_listener(@rt_listener)
|
126
|
+
|
127
|
+
@reflect_cam.enable_reflection(@plane)
|
128
|
+
@reflect_cam.enable_custom_near_clip_plane(@plane)
|
129
|
+
|
130
|
+
@plane_entity.set_material_name("RttMat")
|
131
|
+
|
132
|
+
# Create some knots
|
133
|
+
clone_ent = nil
|
134
|
+
10.times do |i|
|
135
|
+
node = scene_manager.create_scene_node
|
136
|
+
pos = Vector3.new
|
137
|
+
pos.x = Ogre::Math.symmetric_random * 750.0
|
138
|
+
pos.y = Ogre::Math.symmetric_random * 100.0 + 25
|
139
|
+
pos.z = Ogre::Math.symmetric_random * 750.0
|
140
|
+
|
141
|
+
node.set_position(pos)
|
142
|
+
root.add_child(node)
|
143
|
+
|
144
|
+
# Clone it
|
145
|
+
clone_name = "Knot#{i}"
|
146
|
+
clone_ent = knot_entity.clone(clone_name)
|
147
|
+
node.attach_object(clone_ent)
|
148
|
+
end
|
149
|
+
|
150
|
+
camera.set_position(-50, 100, 500)
|
151
|
+
camera.look_at(0, 0, 0)
|
152
|
+
end
|
153
|
+
|
154
|
+
def create_frame_listener
|
155
|
+
self.frame_listener = RenderToTextureListener.new(root, window, camera,
|
156
|
+
@reflect_cam, @plane_node)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
app = RenderToTextureApplication.new
|
161
|
+
app.go
|
@@ -0,0 +1,16 @@
|
|
1
|
+
[Bootstrap]
|
2
|
+
Zip=./media/packs/OgreCore.zip
|
3
|
+
|
4
|
+
[General]
|
5
|
+
FileSystem=./media/
|
6
|
+
FileSystem=./media/materials
|
7
|
+
FileSystem=./media/materials/textures
|
8
|
+
FileSystem=./media/materials/scripts
|
9
|
+
FileSystem=./media/materials/programs
|
10
|
+
FileSystem=./media/models
|
11
|
+
FileSystem=./media/particles
|
12
|
+
FileSystem=./media/overlays
|
13
|
+
Zip=./media/packs/skybox.zip
|
14
|
+
Zip=./media/packs/dragon.zip
|
15
|
+
Zip=./media/packs/cubemap.zip
|
16
|
+
Zip=./media/packs/cubemapsJS.zip
|
data/samples/sky_box.rb
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
$: << File.dirname(__FILE__) + "/.."
|
4
|
+
require 'ogre'
|
5
|
+
require 'application'
|
6
|
+
include Ogre
|
7
|
+
|
8
|
+
$thrusters = nil
|
9
|
+
|
10
|
+
class SkyBoxListener < ApplicationFrameListener
|
11
|
+
attr_accessor :default_dimensions, :default_velocity
|
12
|
+
def initialize(*args)
|
13
|
+
super
|
14
|
+
@default_dimensions = 25.0
|
15
|
+
@default_velocity = 50.0
|
16
|
+
end
|
17
|
+
|
18
|
+
def frame_started(evt)
|
19
|
+
return false unless super(evt)
|
20
|
+
|
21
|
+
if keyboard.key_down?( OIS::KC_N )
|
22
|
+
$thrusters.set_default_dimensions( @default_dimensions + 0.25, @default_dimensions + 0.25 )
|
23
|
+
@default_dimensions += 0.25
|
24
|
+
end
|
25
|
+
|
26
|
+
if keyboard.key_down?( OIS::KC_M )
|
27
|
+
$thrusters.set_default_dimensions( @default_dimensions - 0.25, @default_dimensions - 0.25 )
|
28
|
+
@default_dimensions -= 0.25
|
29
|
+
end
|
30
|
+
|
31
|
+
if keyboard.key_down?( OIS::KC_H )
|
32
|
+
$thrusters.get_emitter( 0 ).set_particle_velocity( @default_velocity + 1 )
|
33
|
+
$thrusters.get_emitter( 1 ).set_particle_velocity( @default_velocity + 1 )
|
34
|
+
@default_velocity += 1
|
35
|
+
end
|
36
|
+
|
37
|
+
if keyboard.key_down?( OIS::KC_J ) && !( @default_velocity < 0.0 )
|
38
|
+
$thrusters.get_emitter( 0 ).set_particle_velocity( @default_velocity - 1 )
|
39
|
+
$thrusters.get_emitter( 1 ).set_particle_velocity( @default_velocity - 1 )
|
40
|
+
@default_velocity -= 1
|
41
|
+
end
|
42
|
+
|
43
|
+
true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
class SkyBoxApplication < Application
|
48
|
+
|
49
|
+
def create_scene
|
50
|
+
scene_manager.set_ambient_light ColourValue.new(0.5, 0.5, 0.5)
|
51
|
+
|
52
|
+
# Create a skybox
|
53
|
+
scene_manager.set_sky_box(true, "SpaceSkyBox", 50 )
|
54
|
+
|
55
|
+
# Create a light
|
56
|
+
l = scene_manager.create_light("MainLight")
|
57
|
+
l.set_position(20,80,50)
|
58
|
+
|
59
|
+
# Also add a nice starship in
|
60
|
+
ent = scene_manager.create_entity( "razor", "razor.mesh" )
|
61
|
+
|
62
|
+
scene_manager.root_scene_node.attach_object( ent )
|
63
|
+
|
64
|
+
$thrusters = scene_manager.create_particle_system( "ParticleSys1", 200 )
|
65
|
+
|
66
|
+
$thrusters.set_material_name("Flare")
|
67
|
+
$thrusters.set_default_dimensions( 25, 25 )
|
68
|
+
|
69
|
+
emitter1 = $thrusters.add_emitter( "Point" )
|
70
|
+
emitter2 = $thrusters.add_emitter( "Point" )
|
71
|
+
|
72
|
+
# Thruster 1
|
73
|
+
emitter1.set_angle( Radian.new(0.05) )
|
74
|
+
emitter1.set_time_to_live( 0.2 )
|
75
|
+
emitter1.set_emission_rate( 70 )
|
76
|
+
|
77
|
+
emitter1.set_particle_velocity( 50 )
|
78
|
+
|
79
|
+
emitter1.set_direction(- Vector3.UNIT_Z)
|
80
|
+
emitter1.set_colour( ColourValue.White, ColourValue.Red)
|
81
|
+
|
82
|
+
# Thruster 2
|
83
|
+
emitter2.set_angle( Radian.new(0.05) )
|
84
|
+
emitter2.set_time_to_live( 0.2 )
|
85
|
+
emitter2.set_emission_rate( 70 )
|
86
|
+
|
87
|
+
emitter2.set_particle_velocity( 50 )
|
88
|
+
|
89
|
+
emitter2.set_direction( -Vector3.UNIT_Z )
|
90
|
+
emitter2.set_colour( ColourValue.White, ColourValue.Red )
|
91
|
+
|
92
|
+
# Set the position of the $thrusters
|
93
|
+
emitter1.set_position( Vector3.new( 5.7, 0.0, 0.0 ) )
|
94
|
+
emitter2.set_position( Vector3.new( -18.0, 0.0, 0.0 ) )
|
95
|
+
|
96
|
+
node = scene_manager.root_scene_node.create_child_scene_node( Vector3.new( 0.0, 6.5, -67.0 ) )
|
97
|
+
node.attach_object($thrusters)
|
98
|
+
end
|
99
|
+
|
100
|
+
def create_frame_listener
|
101
|
+
self.frame_listener = SkyBoxListener.new(root, window, camera)
|
102
|
+
#root.addFrameListener(self.frame_listener)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
app = SkyBoxApplication.new
|
107
|
+
app.go
|