<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.thedarkmod.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ishtvan</id>
	<title>The DarkMod Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.thedarkmod.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ishtvan"/>
	<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Special:Contributions/Ishtvan"/>
	<updated>2026-04-28T09:50:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_1.01&amp;diff=9632</id>
		<title>What&#039;s new in TDM 1.01</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_1.01&amp;diff=9632"/>
		<updated>2010-01-30T22:32:47Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Bugs fixed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is a work-in-progress and can change before the final release. There are &#039;&#039;&#039;no promises&#039;&#039;&#039; here. Features may be postponed or removed even if they appear on this list, and regressions may re-introduce bugs after they&#039;ve been fixed internally. See also the changelog on our bugtracker page: [http://bugs.angua.at/changelog_page.php?project_id=2 Changelog].&lt;br /&gt;
&lt;br /&gt;
== Bugs fixed ==&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1921 #1921]: HUD Font reverts to Doom 3 font after fresh gamesave load.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1963 #1963]: Double doors sometimes highlight at a distance.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1968 #1968] Blackjack no longer makes metallic clang when hitting world&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1970 #1970]: Chests went non-solid when frobbed&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1976 #1976]: Shop items get duplicated on &amp;quot;Restart&amp;quot; after dying&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1990 #1990]: No SOUND on TDM after installing a mission, added CVAR (tdm_fm_restart_delay) to issue a delay request to tdmlauncher.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1996 #1996]: Fixed bug that made shouldered bodies undroppable&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2007 #2007]: Fixed: Location settings did igore the &amp;quot;music volume&amp;quot; slider&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2067 #2067]: Fixed bug when using shop_skip 1 in FMs.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2072 #2072]: Rats (and other small animals) could be shouldered&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2075 #2075]: AI were alerted when they took falling damage&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2083 #2083]: Small items like candles, candle holders, rocks etc floated on water instead of sinking&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2093 #2093]: Fireplace_arch was missing its texture&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2117 #2117]: frob_peer hilite does not sync.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2119 #2119]: Player&#039;s run footfall sounds are played while shouldering a body &lt;br /&gt;
* Fixed savegames getting to huge sizes, leading to out-of-memory or crashes&lt;br /&gt;
* Fixed a few crashes and memory errors&lt;br /&gt;
* Fixed: Crash with ATI cards when viewing certain models (like the marble column)&lt;br /&gt;
* Fixed: Location settings did not work with &amp;quot;fast&amp;quot; ambient method&lt;br /&gt;
* Melee controls now more responsive&lt;br /&gt;
* Fixed blackjack bug where player could hit low ceilings&lt;br /&gt;
* Fixed archer bows blocking blackjack attempts&lt;br /&gt;
* Fixed bug where some close-range melee attacks neglected armor&lt;br /&gt;
* Altered sword thrust collision physics to match up better with visible sword model&lt;br /&gt;
* Minor fixes to models and textures (e.g. inverted normals)&lt;br /&gt;
* Added a bunch of missing editor images for models (STiFU).&lt;br /&gt;
&lt;br /&gt;
== Features added ==&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2123 #2123]: In-game objectives display&lt;br /&gt;
* A lot new skins for: dirty fireplaces, unlit lamps etc.&lt;br /&gt;
* New script events for: get/setDroppable, isEntityHidden, Melee etc.&lt;br /&gt;
* Support for &amp;quot;skin_unlit&amp;quot; and &amp;quot;skin_lit&amp;quot; on light entities&lt;br /&gt;
* New &amp;quot;unbindOnAlertIndex&amp;quot; spawnarg on attached entities, to make AI drop them when alerted&lt;br /&gt;
* Crouch indicator: Lightgem &amp;quot;wings&amp;quot; squash down slightly when crouch mode is on (helpful when climbing)&lt;br /&gt;
* AI have a combat skill level now: novice, trained, skilled&lt;br /&gt;
* added Difficulty Slider for combat in menu&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2024 AI can be set to drop attached objects on alert]&lt;br /&gt;
* greater flexibility added to absence markers&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2012 #2012]: GC&#039;s movetype-specific metal footstep sounds are in-game&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2015 #2015]: Added console commands to control logging to darkmod.log&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2002 #2002]: FM Installer Code checks required version of Mission to be installed, information can be added to darkmod.txt in the FM package.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1977 #1977]: FM Installer Code considers ZIP files as well as PK4s now&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1984 #1984]: FM Installer Code needs to replace dashes with underscores on creating the fms subfolder&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2080 #2080]: Doors have a larger sound radius now.&lt;br /&gt;
&lt;br /&gt;
== AI added ==&lt;br /&gt;
&lt;br /&gt;
* added two zombie types with various skins, as well as &amp;quot;sleeping&amp;quot; behaviour&lt;br /&gt;
* added spiders and spider children&lt;br /&gt;
* added new elite guard character&lt;br /&gt;
* added elite guard helmet (immune to KOs)&lt;br /&gt;
* added skeleton AI &lt;br /&gt;
* added revenant character&lt;br /&gt;
* added male beggar character&lt;br /&gt;
* added male pagan character&lt;br /&gt;
&lt;br /&gt;
== Entities added ==&lt;br /&gt;
&lt;br /&gt;
* A lot of new [[combo entities]] have been added: &lt;br /&gt;
** fireplaces, &lt;br /&gt;
** static torches,&lt;br /&gt;
** statues with torch in hand,&lt;br /&gt;
** campfires, bucket and bonfires,&lt;br /&gt;
** electric streetlights,&lt;br /&gt;
** wall-mounted lamps and torches,&lt;br /&gt;
** geodes with pulsating light,&lt;br /&gt;
** bottles+candle,&lt;br /&gt;
** skulls+candle etc.&lt;br /&gt;
* new colored torch flames: blue, green, orange&lt;br /&gt;
* new fireflames: white and black smoking, smouldering ones, large and huge bonfires, bucketfire&lt;br /&gt;
* a few new model props (eg, saw, wall-light)&lt;br /&gt;
* climbable ragdoll chains&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2110 Bug #2110] [[Loot paintings]]&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
* changed AI footsteps to mono (so the direction of sound is accurate)&lt;br /&gt;
* reduced volume of player footsteps&lt;br /&gt;
* increased sound radius of doors&lt;br /&gt;
&lt;br /&gt;
Added Dario D&#039;s ambient sound contributions.&lt;br /&gt;
&lt;br /&gt;
* Ambient Shaders added&lt;br /&gt;
** animal_crickets_birds01, animal_crickets04, animal_crickets05, animal_dog03, animal_frog03, animal_night_bird01, animal_owl04, animal_owl05, animal_owl06&lt;br /&gt;
** machine_sparks01&lt;br /&gt;
** music_harp01, music_harp02, music_bum_bum01, music_bum_bum02&lt;br /&gt;
** weather_thunder04, weather_thunder05&lt;br /&gt;
* Environmental Sound Shaders added&lt;br /&gt;
** drone01, drone02, drone03a, drone03b, drone05a, drone05b&lt;br /&gt;
** hit01a, hit02b, hit03a, hit03b&lt;br /&gt;
** hum01, hum01b, hum02, hum03, hum04, hum05_loop, hum05_loop_b, hum06_loop, hum06_loop_b, hum07_loop, hum07_loop_b, hum08&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
Added STiFU&#039;s, Renzatic&#039;s and Baddcog&#039;s textures, including the following shaders:&lt;br /&gt;
STiFU:&lt;br /&gt;
* textures/darkmod/door/wood/board_brown_nails_hinge&lt;br /&gt;
* textures/darkmod/metal/detailed/threadplate_large_dirty&lt;br /&gt;
* textures/darkmod/roof/slate_cracked_large_greyblue&lt;br /&gt;
* textures/darkmod/roof/slate_cracked_large_greyblue_shiny&lt;br /&gt;
* textures/darkmod/stone/brick/tiling_1d/poolwall_large_dirty_weathered_greengrey&lt;br /&gt;
* textures/darkmod/stone/brick/tiling_1d/poolwall_large_dirty_weathered_greengrey_wet&lt;br /&gt;
* textures/darkmod/stone/cobblestones/cobblestones_large_uneven_darkgrey&lt;br /&gt;
* textures/darkmod/stone/cobblestones/cobblestones_large_uneven_darkgrey_wet&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_ceramic_large_clean_even&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_ceramic_large_clean_rough&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_ceramic_large_ornate_old_blue&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_large_dirty_cracked&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_large_dirty_cracked_greasy&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_rough_grey&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_rough_grey_greasy&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_cracked_holey_grey&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_cracked_holey_grey_greasy&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_bright&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_bright_greasy&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_dark_bluered&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_dark_bluered_greasy&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_small_ornate_old&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_small_ornate_old_greasy&lt;br /&gt;
* textures/darkmod/wood/boards/polished_shiny_large_red&lt;br /&gt;
* textures/darkmod/wood/boards/rough_wood_large_brown&lt;br /&gt;
* textures/darkmod/wood/boards/rough_wood_large_brown_glossy&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_bright&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_bright_glossy&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_dark&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_dark_glossy&lt;br /&gt;
* textures/darkmod/wood/boards/roof_framework_boards_large_old_brown&lt;br /&gt;
* textures/darkmod/wood/boards/roof_framework_boards_large_old_green&lt;br /&gt;
* textures/darkmod/roof/shingles_blue&lt;br /&gt;
* textures/darkmod/roof/shingles_blue_shiny&lt;br /&gt;
* textures/darkmod/roof/shingles_red_shiny&lt;br /&gt;
* Improved: textures/darkmod/roof/shingles_red&lt;br /&gt;
* textures/darkmod/nature/bones/skull_panels_dirty&lt;br /&gt;
* textures/darkmod/nature/bones/bone_wall&lt;br /&gt;
* textures/darkmod/nature/bones/tiling_1d/trim_bones&lt;br /&gt;
Baddcog:&lt;br /&gt;
* textures/darkmod/roof/rooftiles_ceramic_blue&lt;br /&gt;
* textures/darkmod/roof/rooftiles_ceramic_brown&lt;br /&gt;
* textures/darkmod/roof/rooftiles_ceramic_red&lt;br /&gt;
Renzatic:&lt;br /&gt;
* textures/darkmod/plaster/tiling_1d/plaster_rot01&lt;br /&gt;
* textures/darkmod/nature/dirt/dirt_packed_grey&lt;br /&gt;
* textures/darkmod/stone/brick/bricks_ind_grey&lt;br /&gt;
* textures/darkmod/stone/brick/bricks_mossy01&lt;br /&gt;
* textures/darkmod/stone/brick/stone_rough_segmented&lt;br /&gt;
* textures/darkmod/stone/cobblestones/cobblestone_vert_grey&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/concrete_trim01&lt;br /&gt;
* textures/darkmod/wood/boards/wood_rot_planks01&lt;br /&gt;
* textures/darkmod/wood/boards/wood_rot_planks02&lt;br /&gt;
* textures/darkmod/wood/panels/tiling_1d/wood_old_trim01&lt;br /&gt;
* textures/darkmod/wood/panels/tiling_1d/wood_rot_trim01&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [http://thedarkmod.com/downloads.php Download TDM]&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_1.01&amp;diff=9631</id>
		<title>What&#039;s new in TDM 1.01</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_1.01&amp;diff=9631"/>
		<updated>2010-01-30T22:31:08Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is a work-in-progress and can change before the final release. There are &#039;&#039;&#039;no promises&#039;&#039;&#039; here. Features may be postponed or removed even if they appear on this list, and regressions may re-introduce bugs after they&#039;ve been fixed internally. See also the changelog on our bugtracker page: [http://bugs.angua.at/changelog_page.php?project_id=2 Changelog].&lt;br /&gt;
&lt;br /&gt;
== Bugs fixed ==&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1921 #1921]: HUD Font reverts to Doom 3 font after fresh gamesave load.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1963 #1963]: Double doors sometimes highlight at a distance.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1968 #1968] Blackjack no longer makes metallic clang when hitting world&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1970 #1970]: Chests went non-solid when frobbed&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1976 #1976]: Shop items get duplicated on &amp;quot;Restart&amp;quot; after dying&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1990 #1990]: No SOUND on TDM after installing a mission, added CVAR (tdm_fm_restart_delay) to issue a delay request to tdmlauncher.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1996 #1996]: Fixed bug that made shouldered bodies undroppable&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2007 #2007]: Fixed: Location settings did igore the &amp;quot;music volume&amp;quot; slider&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2067 #2067]: Fixed bug when using shop_skip 1 in FMs.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2072 #2072]: Rats (and other small animals) could be shouldered&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2075 #2075]: AI were alerted when they took falling damage&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2083 #2083]: Small items like candles, candle holders, rocks etc floated on water instead of sinking&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2093 #2093]: Fireplace_arch was missing its texture&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2117 #2117]: frob_peer hilite does not sync.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2119 #2119]: Player&#039;s run footfall sounds are played while shouldering a body &lt;br /&gt;
* Fixed savegames getting to huge sizes, leading to out-of-memory or crashes&lt;br /&gt;
* Fixed a few crashes and memory errors&lt;br /&gt;
* Fixed: Crash with ATI cards when viewing certain models (like the marble column)&lt;br /&gt;
* Fixed: Location settings did not work with &amp;quot;fast&amp;quot; ambient method&lt;br /&gt;
* Melee controls now more responsive&lt;br /&gt;
* Fixed blackjack bug where player could hit low ceilings&lt;br /&gt;
* Fixed archer bows blocking blackjack attempts&lt;br /&gt;
* Fixed bug where some close-range melee attacks neglected armor&lt;br /&gt;
* Minor fixes to models and textures (e.g. inverted normals)&lt;br /&gt;
* Added a bunch of missing editor images for models (STiFU).&lt;br /&gt;
&lt;br /&gt;
== Features added ==&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2123 #2123]: In-game objectives display&lt;br /&gt;
* A lot new skins for: dirty fireplaces, unlit lamps etc.&lt;br /&gt;
* New script events for: get/setDroppable, isEntityHidden, Melee etc.&lt;br /&gt;
* Support for &amp;quot;skin_unlit&amp;quot; and &amp;quot;skin_lit&amp;quot; on light entities&lt;br /&gt;
* New &amp;quot;unbindOnAlertIndex&amp;quot; spawnarg on attached entities, to make AI drop them when alerted&lt;br /&gt;
* Crouch indicator: Lightgem &amp;quot;wings&amp;quot; squash down slightly when crouch mode is on (helpful when climbing)&lt;br /&gt;
* AI have a combat skill level now: novice, trained, skilled&lt;br /&gt;
* added Difficulty Slider for combat in menu&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2024 AI can be set to drop attached objects on alert]&lt;br /&gt;
* greater flexibility added to absence markers&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2012 #2012]: GC&#039;s movetype-specific metal footstep sounds are in-game&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2015 #2015]: Added console commands to control logging to darkmod.log&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2002 #2002]: FM Installer Code checks required version of Mission to be installed, information can be added to darkmod.txt in the FM package.&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1977 #1977]: FM Installer Code considers ZIP files as well as PK4s now&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1984 #1984]: FM Installer Code needs to replace dashes with underscores on creating the fms subfolder&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2080 #2080]: Doors have a larger sound radius now.&lt;br /&gt;
&lt;br /&gt;
== AI added ==&lt;br /&gt;
&lt;br /&gt;
* added two zombie types with various skins, as well as &amp;quot;sleeping&amp;quot; behaviour&lt;br /&gt;
* added spiders and spider children&lt;br /&gt;
* added new elite guard character&lt;br /&gt;
* added elite guard helmet (immune to KOs)&lt;br /&gt;
* added skeleton AI &lt;br /&gt;
* added revenant character&lt;br /&gt;
* added male beggar character&lt;br /&gt;
* added male pagan character&lt;br /&gt;
&lt;br /&gt;
== Entities added ==&lt;br /&gt;
&lt;br /&gt;
* A lot of new [[combo entities]] have been added: &lt;br /&gt;
** fireplaces, &lt;br /&gt;
** static torches,&lt;br /&gt;
** statues with torch in hand,&lt;br /&gt;
** campfires, bucket and bonfires,&lt;br /&gt;
** electric streetlights,&lt;br /&gt;
** wall-mounted lamps and torches,&lt;br /&gt;
** geodes with pulsating light,&lt;br /&gt;
** bottles+candle,&lt;br /&gt;
** skulls+candle etc.&lt;br /&gt;
* new colored torch flames: blue, green, orange&lt;br /&gt;
* new fireflames: white and black smoking, smouldering ones, large and huge bonfires, bucketfire&lt;br /&gt;
* a few new model props (eg, saw, wall-light)&lt;br /&gt;
* climbable ragdoll chains&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2110 Bug #2110] [[Loot paintings]]&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
* changed AI footsteps to mono (so the direction of sound is accurate)&lt;br /&gt;
* reduced volume of player footsteps&lt;br /&gt;
* increased sound radius of doors&lt;br /&gt;
&lt;br /&gt;
Added Dario D&#039;s ambient sound contributions.&lt;br /&gt;
&lt;br /&gt;
* Ambient Shaders added&lt;br /&gt;
** animal_crickets_birds01, animal_crickets04, animal_crickets05, animal_dog03, animal_frog03, animal_night_bird01, animal_owl04, animal_owl05, animal_owl06&lt;br /&gt;
** machine_sparks01&lt;br /&gt;
** music_harp01, music_harp02, music_bum_bum01, music_bum_bum02&lt;br /&gt;
** weather_thunder04, weather_thunder05&lt;br /&gt;
* Environmental Sound Shaders added&lt;br /&gt;
** drone01, drone02, drone03a, drone03b, drone05a, drone05b&lt;br /&gt;
** hit01a, hit02b, hit03a, hit03b&lt;br /&gt;
** hum01, hum01b, hum02, hum03, hum04, hum05_loop, hum05_loop_b, hum06_loop, hum06_loop_b, hum07_loop, hum07_loop_b, hum08&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
Added STiFU&#039;s, Renzatic&#039;s and Baddcog&#039;s textures, including the following shaders:&lt;br /&gt;
STiFU:&lt;br /&gt;
* textures/darkmod/door/wood/board_brown_nails_hinge&lt;br /&gt;
* textures/darkmod/metal/detailed/threadplate_large_dirty&lt;br /&gt;
* textures/darkmod/roof/slate_cracked_large_greyblue&lt;br /&gt;
* textures/darkmod/roof/slate_cracked_large_greyblue_shiny&lt;br /&gt;
* textures/darkmod/stone/brick/tiling_1d/poolwall_large_dirty_weathered_greengrey&lt;br /&gt;
* textures/darkmod/stone/brick/tiling_1d/poolwall_large_dirty_weathered_greengrey_wet&lt;br /&gt;
* textures/darkmod/stone/cobblestones/cobblestones_large_uneven_darkgrey&lt;br /&gt;
* textures/darkmod/stone/cobblestones/cobblestones_large_uneven_darkgrey_wet&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_ceramic_large_clean_even&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_ceramic_large_clean_rough&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_ceramic_large_ornate_old_blue&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_large_dirty_cracked&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_large_dirty_cracked_greasy&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_rough_grey&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_rough_grey_greasy&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_cracked_holey_grey&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_cracked_holey_grey_greasy&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_bright&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_bright_greasy&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_dark_bluered&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_dark_bluered_greasy&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_small_ornate_old&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_small_ornate_old_greasy&lt;br /&gt;
* textures/darkmod/wood/boards/polished_shiny_large_red&lt;br /&gt;
* textures/darkmod/wood/boards/rough_wood_large_brown&lt;br /&gt;
* textures/darkmod/wood/boards/rough_wood_large_brown_glossy&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_bright&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_bright_glossy&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_dark&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_dark_glossy&lt;br /&gt;
* textures/darkmod/wood/boards/roof_framework_boards_large_old_brown&lt;br /&gt;
* textures/darkmod/wood/boards/roof_framework_boards_large_old_green&lt;br /&gt;
* textures/darkmod/roof/shingles_blue&lt;br /&gt;
* textures/darkmod/roof/shingles_blue_shiny&lt;br /&gt;
* textures/darkmod/roof/shingles_red_shiny&lt;br /&gt;
* Improved: textures/darkmod/roof/shingles_red&lt;br /&gt;
* textures/darkmod/nature/bones/skull_panels_dirty&lt;br /&gt;
* textures/darkmod/nature/bones/bone_wall&lt;br /&gt;
* textures/darkmod/nature/bones/tiling_1d/trim_bones&lt;br /&gt;
Baddcog:&lt;br /&gt;
* textures/darkmod/roof/rooftiles_ceramic_blue&lt;br /&gt;
* textures/darkmod/roof/rooftiles_ceramic_brown&lt;br /&gt;
* textures/darkmod/roof/rooftiles_ceramic_red&lt;br /&gt;
Renzatic:&lt;br /&gt;
* textures/darkmod/plaster/tiling_1d/plaster_rot01&lt;br /&gt;
* textures/darkmod/nature/dirt/dirt_packed_grey&lt;br /&gt;
* textures/darkmod/stone/brick/bricks_ind_grey&lt;br /&gt;
* textures/darkmod/stone/brick/bricks_mossy01&lt;br /&gt;
* textures/darkmod/stone/brick/stone_rough_segmented&lt;br /&gt;
* textures/darkmod/stone/cobblestones/cobblestone_vert_grey&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/concrete_trim01&lt;br /&gt;
* textures/darkmod/wood/boards/wood_rot_planks01&lt;br /&gt;
* textures/darkmod/wood/boards/wood_rot_planks02&lt;br /&gt;
* textures/darkmod/wood/panels/tiling_1d/wood_old_trim01&lt;br /&gt;
* textures/darkmod/wood/panels/tiling_1d/wood_rot_trim01&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [http://thedarkmod.com/downloads.php Download TDM]&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_1.01&amp;diff=9538</id>
		<title>What&#039;s new in TDM 1.01</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_1.01&amp;diff=9538"/>
		<updated>2010-01-20T22:09:19Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is a work-in-progress and can change before the final release. There are &#039;&#039;&#039;no promises&#039;&#039;&#039; here. Features may be postponed or removed even if they appear on this list, and regressions may re-introduce bugs after they&#039;ve been fixed internally.&lt;br /&gt;
&lt;br /&gt;
== Bugs fixed ==&lt;br /&gt;
&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1970 #1970]: Chests went non-solid when frobbed&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2072 #2072]: The player could shoulder rats&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2083 #2083]: Small items like candles, candle holders, rocks etc floated on water instead of sinking&lt;br /&gt;
* Fixed savegames getting to huge sizes, leading to out-of-memory or crashes&lt;br /&gt;
* Fixed a few crashes and memory errors&lt;br /&gt;
* Fixed: Crash with ATI cards when viewing certain models (like the marble column)&lt;br /&gt;
* Fixed: Location settings did not work with &amp;quot;fast&amp;quot; ambient method&lt;br /&gt;
* Fixed: Location settings did igore the &amp;quot;music volume&amp;quot; slider (work in progress)&lt;br /&gt;
* Melee controls now more responsive&lt;br /&gt;
* Fixed blackjack bug where player could hit low ceilings&lt;br /&gt;
* Blackjack no longer makes metallic clang when hitting world&lt;br /&gt;
* Fixed bug where some close-range melee attacks neglected armor&lt;br /&gt;
* Fixed bug that made shouldered bodies undroppable&lt;br /&gt;
* Minor fixes to models and textures (eg, inverted normals)&lt;br /&gt;
&lt;br /&gt;
== Features added ==&lt;br /&gt;
&lt;br /&gt;
* A lot new skins for: dirty fireplaces, unlit lamps etc.&lt;br /&gt;
* New script events for: get/setDroppable, isEntityHidden, Melee etc.&lt;br /&gt;
* Support for &amp;quot;skin_unlit&amp;quot; and &amp;quot;skin_lit&amp;quot; on light entities&lt;br /&gt;
* New &amp;quot;unbindOnAlertIndex&amp;quot; spawnarg on attached entities, to make AI drop them when alerted&lt;br /&gt;
* Crouch indicator: Lightgem &amp;quot;wings&amp;quot; squash down slightly when crouch mode is on (helpful when climbing)&lt;br /&gt;
* AI have a combat skill level now: novice, trained, skilled&lt;br /&gt;
* added Difficulty Slider for combat in menu&lt;br /&gt;
* AI can be set to drop attached objects on alert&lt;br /&gt;
* greater flexibility added to absence markers&lt;br /&gt;
&lt;br /&gt;
== AI added ==&lt;br /&gt;
&lt;br /&gt;
* added two zombie types with various skins, as well as &amp;quot;sleeping&amp;quot; behaviour&lt;br /&gt;
* added spiders and spider children&lt;br /&gt;
* added new elite guard character&lt;br /&gt;
* added elite guard helmet (immune to KOs)&lt;br /&gt;
* added skeleton AI&lt;br /&gt;
&lt;br /&gt;
== Entities added ==&lt;br /&gt;
&lt;br /&gt;
* A lot of new [[combo entities]] have been added: &lt;br /&gt;
** fireplaces, &lt;br /&gt;
** static torches,&lt;br /&gt;
** statues with torch in hand,&lt;br /&gt;
** campfires, bucket and bonfires,&lt;br /&gt;
** electric streetlights,&lt;br /&gt;
** wall-mounted lamps and torches,&lt;br /&gt;
** geodes with pulsating light,&lt;br /&gt;
** bottles+candle,&lt;br /&gt;
** skulls+candle etc.&lt;br /&gt;
* new colored torch flames: blue, green, orange&lt;br /&gt;
* new fireflames: white and black smoking, smouldering ones, large and huge bonfires, bucketfire&lt;br /&gt;
* a few new model props (eg, saw, wall-light)&lt;br /&gt;
* climbable ragdoll chains&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
&lt;br /&gt;
* changed AI footsteps to mono (so the direction of sound is accurate)&lt;br /&gt;
* reduced volume of player footsteps&lt;br /&gt;
* increased sound radius of doors&lt;br /&gt;
&lt;br /&gt;
Added Dario D&#039;s ambient sound contributions.&lt;br /&gt;
&lt;br /&gt;
* Ambient Shaders added&lt;br /&gt;
** animal_crickets_birds01, animal_crickets04, animal_crickets05, animal_dog03, animal_frog03, animal_night_bird01, animal_owl04, animal_owl05, animal_owl06&lt;br /&gt;
** machine_sparks01&lt;br /&gt;
** music_harp01, music_harp02, music_bum_bum01, music_bum_bum02&lt;br /&gt;
** weather_thunder04, weather_thunder05&lt;br /&gt;
* Environmental Sound Shaders added&lt;br /&gt;
** drone01, drone02, drone03a, drone03b, drone05a, drone05b&lt;br /&gt;
** hit01a, hit02b, hit03a, hit03b&lt;br /&gt;
** hum01, hum01b, hum02, hum03, hum04, hum05_loop, hum05_loop_b, hum06_loop, hum06_loop_b, hum07_loop, hum07_loop_b, hum08&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
Added STiFU&#039;s textures, including the following shaders:&lt;br /&gt;
* textures/darkmod/door/wood/board_brown_nails_hinge&lt;br /&gt;
* textures/darkmod/metal/detailed/threadplate_large_dirty&lt;br /&gt;
* textures/darkmod/roof/slate_cracked_large_greyblue&lt;br /&gt;
* textures/darkmod/roof/slate_cracked_large_greyblue_shiny&lt;br /&gt;
* textures/darkmod/stone/brick/tiling_1d/poolwall_large_dirty_weathered_greengrey&lt;br /&gt;
* textures/darkmod/stone/brick/tiling_1d/poolwall_large_dirty_weathered_greengrey_wet&lt;br /&gt;
* textures/darkmod/stone/cobblestones/cobblestones_large_uneven_darkgrey&lt;br /&gt;
* textures/darkmod/stone/cobblestones/cobblestones_large_uneven_darkgrey_wet&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_ceramic_large_clean_even&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_ceramic_large_clean_rough&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_ceramic_large_ornate_old_blue&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_large_dirty_cracked&lt;br /&gt;
* textures/darkmod/stone/flat/tiles_large_dirty_cracked_greasy&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_rough_grey&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_rough_grey_greasy&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_cracked_holey_grey&lt;br /&gt;
* textures/darkmod/stone/natural/rock_large_cracked_holey_grey_greasy&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_bright&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_bright_greasy&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_dark_bluered&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_large_ornate_old_dark_bluered_greasy&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_small_ornate_old&lt;br /&gt;
* textures/darkmod/stone/sculpted/tiling_1d/trim_small_ornate_old_greasy&lt;br /&gt;
* textures/darkmod/wood/boards/polished_shiny_large_red&lt;br /&gt;
* textures/darkmod/wood/boards/rough_wood_large_brown&lt;br /&gt;
* textures/darkmod/wood/boards/rough_wood_large_brown_glossy&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_bright&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_bright_glossy&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_dark&lt;br /&gt;
* textures/darkmod/wood/boards/planks_wood_large_worn_rough_dark_glossy&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [http://thedarkmod.com/downloads.php Download TDM]&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7466</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7466"/>
		<updated>2008-12-13T19:39:42Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Order of rotations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
To determine the order of multiple rotations, Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions.  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg (&amp;quot;pitch yaw roll&amp;quot;) of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attaching to AI Joints of Unknown Orientation ==&lt;br /&gt;
When attaching objects to AI joints and trying to orient the attached object relative to the joint, oftentimes you don&#039;t know how the joint is oriented relative to the world axes.  You can use &#039;&#039;&#039;r_showskel 1&#039;&#039;&#039; in the console to show the joints and display a line for each axis.  You still don&#039;t know which axis is which.  To figure out how to orient something relative to the joint, first apply a yaw rotation by setting the attachment angles to &amp;quot;0 &amp;lt;test angle&amp;gt; 0&amp;quot;, and see how that differs from angles of &amp;quot;0 0 0&amp;quot;.  (It is easiest to see the difference by spawning the AI with the attachment angle set to &amp;quot;0 0 0&amp;quot;, changing the angle, then calling &#039;&#039;&#039;reloaddecls&#039;&#039;&#039; and spawning another AI).  Now you know which way yaw rotates.  Do the same for pitch, now you know which way pitch rotates, and by process of elimination you know roll.  Now you know what will happen when you input angles to orient something relative to the joint.  First it will rotate in the sense you identified as yaw, then in pitch, then finally in roll.  &lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7120</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7120"/>
		<updated>2008-09-22T00:48:37Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions.  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg (&amp;quot;pitch yaw roll&amp;quot;) of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attaching to AI Joints of Unknown Orientation ==&lt;br /&gt;
When attaching objects to AI joints and trying to orient the attached object relative to the joint, oftentimes you don&#039;t know how the joint is oriented relative to the world axes.  You can use &#039;&#039;&#039;r_showskel 1&#039;&#039;&#039; in the console to show the joints and display a line for each axis.  You still don&#039;t know which axis is which.  To figure out how to orient something relative to the joint, first apply a yaw rotation by setting the attachment angles to &amp;quot;0 &amp;lt;test angle&amp;gt; 0&amp;quot;, and see how that differs from angles of &amp;quot;0 0 0&amp;quot;.  (It is easiest to see the difference by spawning the AI with the attachment angle set to &amp;quot;0 0 0&amp;quot;, changing the angle, then calling &#039;&#039;&#039;reloaddecls&#039;&#039;&#039; and spawning another AI).  Now you know which way yaw rotates.  Do the same for pitch, now you know which way pitch rotates, and by process of elimination you know roll.  Now you know what will happen when you input angles to orient something relative to the joint.  First it will rotate in the sense you identified as yaw, then in pitch, then finally in roll.  &lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7078</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7078"/>
		<updated>2008-09-20T08:46:56Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Attaching to AI Joints of Unknown Orientation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg (&amp;quot;pitch yaw roll&amp;quot;) of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attaching to AI Joints of Unknown Orientation ==&lt;br /&gt;
When attaching objects to AI joints and trying to orient the attached object relative to the joint, oftentimes you don&#039;t know how the joint is oriented relative to the world axes.  You can use &#039;&#039;&#039;r_showskel 1&#039;&#039;&#039; in the console to show the joints and display a line for each axis.  You still don&#039;t know which axis is which.  To figure out how to orient something relative to the joint, first apply a yaw rotation by setting the attachment angles to &amp;quot;0 &amp;lt;test angle&amp;gt; 0&amp;quot;, and see how that differs from angles of &amp;quot;0 0 0&amp;quot;.  (It is easiest to see the difference by spawning the AI with the attachment angle set to &amp;quot;0 0 0&amp;quot;, changing the angle, then calling &#039;&#039;&#039;reloaddecls&#039;&#039;&#039; and spawning another AI).  Now you know which way yaw rotates.  Do the same for pitch, now you know which way pitch rotates, and by process of elimination you know roll.  Now you know what will happen when you input angles to orient something relative to the joint.  First it will rotate in the sense you identified as yaw, then in pitch, then finally in roll.  &lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7077</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7077"/>
		<updated>2008-09-20T08:45:49Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Attaching to AI Joints of Unknown Orientation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg (&amp;quot;pitch yaw roll&amp;quot;) of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attaching to AI Joints of Unknown Orientation ==&lt;br /&gt;
When attaching things to AI joints and trying to orient them, oftentimes you don&#039;t know how the joint is oriented.  You can use &#039;&#039;&#039;r_showskel 1&#039;&#039;&#039; in the console to show the joints and display a line for each axis.  You still don&#039;t know which axis is which.  To figure out how to orient something relative to the joint, first apply a yaw rotation by setting the attachment angles to &amp;quot;0 &amp;lt;test angle&amp;gt; 0&amp;quot;, and see how that differs from angles of &amp;quot;0 0 0&amp;quot;.  (It is easiest to see the difference by spawning the AI with the attachment angle set to &amp;quot;0 0 0&amp;quot;, changing the angle, then calling &#039;&#039;&#039;reloaddecls&#039;&#039;&#039; and spawning another AI).  Now you know which way yaw rotates.  Do the same for pitch, now you know which way pitch rotates, and by process of elimination you know roll.  Now you know what will happen when you input angles to orient something relative to the joint.  First it will rotate in the sense you identified as yaw, then in pitch, then finally in roll.  &lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7076</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7076"/>
		<updated>2008-09-20T08:45:28Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Attaching to AI Joints of Unknown Orientation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg (&amp;quot;pitch yaw roll&amp;quot;) of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attaching to AI Joints of Unknown Orientation ==&lt;br /&gt;
When attaching things to AI joints and trying to orient them, oftentimes you don&#039;t know how the joint is oriented.  You can use &#039;&#039;&#039;r_showskel 1&#039;&#039;&#039; in the console to show the joints and display a line for each axis.  You still don&#039;t know which axis is which.  To figure out how to orient something relative to the joint, first apply a yaw rotation by setting the attachment angles to &amp;quot;0 &amp;lt;test angle&amp;gt; 0&amp;quot;, and see how that differs from angles of &amp;quot;0 0 0&amp;quot;.  (It is easiest to see the difference by spawning the AI with the attachment angle set to &amp;quot;0 0 0&amp;quot;, changing the angle, then calling &#039;&#039;&#039;reloaddecls&#039;&#039;&#039; and spawning another AI).  Now you know which way yaw rotates.  Do the same for pitch, now you know which way pitch rotates, and by process of elimination you know roll.  Now you know what will happen when you input angles to orient something relative to the joint.  It will rotate first in the sense you identified as yaw, then in pitch, then finally in roll.  &lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7075</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7075"/>
		<updated>2008-09-20T08:45:01Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Attaching to AI Joints of Unknown Orientation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg (&amp;quot;pitch yaw roll&amp;quot;) of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attaching to AI Joints of Unknown Orientation ==&lt;br /&gt;
When attaching things to AI joints and trying to orient them, oftentimes you don&#039;t know how the joint is oriented.  You can use &#039;&#039;&#039;r_showskel 1&#039;&#039;&#039; in the console to show the joints and display a line for each axis.  You still don&#039;t know which axis is which.  To figure out how to orient something relative to the joint, first apply a yaw rotation by setting the attachment angles to &amp;quot;0 &amp;lt;test angle&amp;gt; 0&amp;quot;, and see how that differs from angles of &amp;quot;0 0 0&amp;quot;.  (It is easiest to see the difference by spawning the AI with the attachment angle set to &amp;quot;0 0 0&amp;quot;, changing the angle, then calling &#039;&#039;&#039;reloaddecls&#039;&#039;&#039; and spawning another AI).  Now you know which way yaw rotates.  Do the same for pitch, now you know which way pitch rotates, and by process of elimination you know roll.  Now you know what will happen when you input angles to orient something relative to the joint.  It will rotate in the sense you identified as yaw, then in pitch, then finally in roll.  &lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7074</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7074"/>
		<updated>2008-09-20T08:44:20Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Attaching to AI Joints of Unknown Orientation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg (&amp;quot;pitch yaw roll&amp;quot;) of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attaching to AI Joints of Unknown Orientation ==&lt;br /&gt;
When attaching things to AI joints and trying to orient them, oftentimes you don&#039;t know how the joint is oriented.  You can use &#039;&#039;&#039;r_showskel 1&#039;&#039;&#039; in the console to show the joints and display a line for each axis.  You still don&#039;t know which axis is which.  To figure out how to orient something relative to the joint, first apply a yaw rotation by setting the attachment angles to &amp;quot;0 &amp;lt;test angle&amp;gt; 0&amp;quot;, and see how that differs from angles of &amp;quot;0 0 0&amp;quot;.  (It is easiest to see the difference by spawning a copy of the AI with the attachment angle of &amp;quot;0 0 0&amp;quot;, changing the angle, then calling &#039;&#039;&#039;reloaddecls&#039;&#039;&#039; and spawning another AI).  Now you know which way yaw rotates.  Do the same for pitch, now you know which way pitch rotates, and by process of elimination you know roll.  Now you know what will happen when you input angles to orient something relative to the joint.  It will rotate in the sense you identified as yaw, then in pitch, then finally in roll.  &lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7073</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7073"/>
		<updated>2008-09-20T08:42:36Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Attaching to AI Joints of Unknown Orientation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg (&amp;quot;pitch yaw roll&amp;quot;) of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attaching to AI Joints of Unknown Orientation ==&lt;br /&gt;
When attaching things to AI joints and trying to orient them, oftentimes you don&#039;t know how the joint is oriented.  You can use &#039;&#039;&#039;r_showskel 1&#039;&#039;&#039; in the console to show the joints and display a line for each axis.  You still don&#039;t know which axis is which.  To figure out how to orient something relative to the joint, first apply a yaw rotation by setting the attachment angles to &amp;quot;0 &amp;lt;test angle&amp;gt; 0&amp;quot;, and see how that differs from angles of &amp;quot;0 0 0&amp;quot;.  Now you know what yaw does.  Do the same for pitch, now you know which way pitch rotates, and by process of elimination you know roll.  Now you know what will happen when you input angles to orient something relative to the joint.  It will rotate in the sense you identified as yaw, then in pitch, then finally in roll.  &lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7072</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7072"/>
		<updated>2008-09-20T08:42:03Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg (&amp;quot;pitch yaw roll&amp;quot;) of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attaching to AI Joints of Unknown Orientation ==&lt;br /&gt;
When attaching things to AI joints and trying to orient them, oftentimes you don&#039;t know how the joint is oriented.  You can use &#039;&#039;&#039;r_showskel 1&#039;&#039;&#039; in the console to show the joints and display a line for each axis.  You still don&#039;t know which axis is which.  To figure out how to orient something, first apply a yaw rotation by setting the attachment angles to &amp;quot;0 &amp;lt;test angle&amp;gt; 0&amp;quot;, and see how that differs from angles of &amp;quot;0 0 0&amp;quot;.  Now you know what yaw does.  Do the same for pitch, now you know which way pitch rotates, and by process of elimination you know roll.  Now you know what will happen when you input angles to orient something relative to the joint.  It will rotate in the sense you identified as yaw, then in pitch, then finally in roll.  &lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7071</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7071"/>
		<updated>2008-09-20T08:33:13Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Example 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg (&amp;quot;pitch yaw roll&amp;quot;) of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7070</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7070"/>
		<updated>2008-09-20T08:31:36Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Example 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations does matter.&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7069</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7069"/>
		<updated>2008-09-20T08:28:31Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Order of rotations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;yaw, pitch, roll&amp;quot; convention (also known as &amp;quot;zyx,&amp;quot; the full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  (NOTE: If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations matters).&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7068</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7068"/>
		<updated>2008-09-20T08:27:07Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: /* Example 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
== Definition of axes==&lt;br /&gt;
Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
== Order of rotations == &lt;br /&gt;
It turns out that Doom3 uses the &amp;quot;zyx&amp;quot; or &amp;quot;yaw, pitch, roll&amp;quot; convention (The full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
== Sign Conventions ==&lt;br /&gt;
In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
== Example 1 ==&lt;br /&gt;
Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  (NOTE: If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations matters).&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;45 -90 180&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{editing}} {{coding}} {{ai}}&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7065</id>
		<title>Euler Angle Convention Used in Doom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Euler_Angle_Convention_Used_in_Doom3&amp;diff=7065"/>
		<updated>2008-09-20T07:46:40Z</updated>

		<summary type="html">&lt;p&gt;Ishtvan: New page: [http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Euler_angles Euler Angles] are a way of specifying the orientation of a given object relative to three reference axes in the world.  To orient objects, Doom3 uses the &amp;quot;angles&amp;quot; spawnarg, which takes three space-delimited values, defined as: &amp;quot;pitch yaw roll&amp;quot;.  We need to know more than this to precisely specify the orientation of something.  We need to know which axis is which, and we need to know the order in which these operations are performed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Definition of axes:&#039;&#039;&#039;: Imagine you are standing in a Doom3 map.  The &#039;&#039;&#039;z&#039;&#039;&#039; axis is up.  A pure yaw rotates about the &#039;&#039;&#039;z&#039;&#039;&#039; axis.  The &#039;&#039;&#039;x&#039;&#039;&#039; axis is forward.  A pure roll rotates about the x axis.  The &#039;&#039;&#039;y&#039;&#039;&#039; axis extends out to your left.  A pure pitch rotates about the &#039;&#039;&#039;y&#039;&#039;&#039; axis.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Order of rotations&#039;&#039;&#039;: It turns out that Doom3 uses the &amp;quot;zyx&amp;quot; or &amp;quot;yaw, pitch, roll&amp;quot; convention (The full rotation matrix for this convention is given in [http://en.wikipedia.org/wiki/Euler_angles this article]).  Let&#039;s say you have entered a spawnarg as &amp;quot;pitch yaw roll.&amp;quot;  This is how Doom3 applies these values to orient an object: First, the yaw is applied about the world &#039;&#039;&#039;z&#039;&#039;&#039; axis, second, the pitch is applied about the yawed &#039;&#039;&#039;y&#039;&#039;&#039; axis, and third, the roll is applied about the yawed and pitched &#039;&#039;&#039;x&#039;&#039;&#039; axis.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sign Conventions&#039;&#039;&#039;: In mathematics, a clockwise rotation is a positive angle, and a counterclockwise rotation is a negative angle.  Pitch, yaw and roll have their own conventions (positive pitch is rotating something from forward to the ceiling).  The combination of the defined axes, the mathematical rotation sign convention, and the sign conventions of pitch, yaw and roll result in some sign changes when going from the pitch, yaw, roll angles to the actual angular rotation about the axis that is entered in to the rotation matrix.  The conventions are described below: &lt;br /&gt;
&lt;br /&gt;
Pitch is positive when pitching from forward to up.  This is a counterclockwise rotation about the &#039;&#039;&#039;y&#039;&#039;&#039; (left) axis.  Therefore, positive pitch means negative rotation angle.  Yaw is positive when rotating from the forward to the right.  This is a counterclockwise rotation about the &#039;&#039;&#039;z&#039;&#039;&#039; (up) axis.  Therefore, positive yaw means negative rotation angle.  Roll is positive when rotating from up to right.  This is a clockwise rotation about the &#039;&#039;&#039;x&#039;&#039;&#039; (forward) axis.  Therefore, positive roll means positive rotation angle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 1&#039;&#039;&#039;: Suppose you start out with an airplane pointing straight ahead with level wings.  You want the airplane to end up pointing all the way to your right, with the right wing pointing down at the ground.  Keeping in mind that the angles are applied in the order of yaw, pitch, roll, we enter a yaw of +90 degrees, and a roll of 90 degrees.  We would enter in an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;0 90 90&amp;quot;.  (NOTE: If instead the roll had been applied before the yaw, these angles would have resulted in an airplane pointing straight down with its wings extending forward and back, so the order of rotations matters).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example 2&#039;&#039;&#039;: Again you start out with an airplane pointing straight ahead with wings level.  Now, you want the airplane nose pointing to your left and up 45 degrees, and you want the airplane to be upside-down.  Again, yaw is applied first, then pitch, then roll.  So we know yaw must be -90, pointing the airplane left.  Pitch is +45, tipping the nose up, and roll is 180, rotating the plane upside-down about its long axis.  We therefore enter an angles spawnarg &amp;quot;pitch yaw roll&amp;quot; of &amp;quot;45 -90 180&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Ishtvan</name></author>
	</entry>
</feed>