Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

Also see [[AdvancedOptions]]
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox where print preview displays the noscript content */
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
 [img[3dcursor Image|./blenderPicts/cursor.png]]

* The place where new objects are added. It is difficult to position correctly since it is "3D" and your mouse operates in "2D". If you manipulate in one view so that it looks ok, it will probably not ok from a different viewpoint.
What you need is //two different "orthographic" [[views|Viewing]]//, for instance "front view orthographic", and "top view orthographic".  <br>If you place the 3D cursor on the correct place for //both// views, it will be correct for //all// views.<br> (Note that the two views must be //orthographic// projections, and must be //perpendicular to each other// or else it won't work out)
* If you want to place the cursor on the position of some existing vertex: select that vertex, use @@Shift-S@@, and choose "Cursor to Selected".
Basic techniques suffice to move complete objects around in an animation. See [[body animation]|Body Animation]] for more complex animation techniques. For animation you use the ''Timeline'' window. (Located at the bottom in the default configuration).
* The Timeline show "time" in number of keyframes.  [>img[renderpropImage|./blenderPicts/renderprops.png]] In the ''Render'' properties (n the properties panel on the right) you can select frame rate. (default: 24 frames per second). You can toggle the time scale between keyframes only or seconds+keyframes  by using @@ ~Cntrl-T@@
*Basic animation technique:
** Set the "green bar" in the Timeline to some time between 0 and the end of your animation. User the mouse or, better, use the "left/right arrow" keys. 
** Use normal techniques for moving objects around and rotate in the correct manipulation
** Use the @@I-key@@ to insert a keyframe. From the popup you normally choose "~LocRot", to denote that you animate both the location and the rotation of your objects. 
** There are also buttons  [img(40px,)[insertDeleteImage|./blenderPicts/insertDeleteKeyframe.png]] for inserting or deleting complete keyframes.
* Faster technique: use the ''record'' button [img(25px,)[recordImage|./blenderPicts/record.png]] from the Timeline window. Then you select a time, put object into position/orientation, and (without using the ''I'' key) you repeat this procedure. Press the ''record'' button again to stop recording. 
* [>img(130px,)[keyingsetImage|./blenderPicts/keyingset.png]] By default the ''record'' button records Location, Rotation, and Scale. Usually you want just Location and Rotation. Next to the record button  is a button for enabling an Active Keying Set, and next to that,  a selection box where you can select, for instance, "~LocRot" as Active Keying Set  
* Playback: drag the green time bar or press the "Play" button at the bottom pof the Timeline window.
* Note that you can select Start and End time of you animation at the bottom of the Timeline window.
* For more complicated animations, you can drop (@@M-key@@) //markers// within the Timeline.  Use @@~Cntrl-M@@ to enter a logical name for a marker. (Or use the Marker menu).
*[>img[graphEditorImage|./blenderPicts/graphEditor.png]]For finetuning and more elaborate animation you will use the ''~GraphEditor'' window. See tutorials. 
* Graph editor elements are "F curves", showing some animation component like X-coordinate of location or Euler rotation angle around the Z axis. Note that the vertical scales for location coordinates and rotation angles use different units, which might be inconvenient. Use scaling (see below) to have a clear view. Also note that on the side panel you can toggle the visibility of F-curves, which helps to find out "which is which".
* The graph editor panel works "as usual": RMB for selection, @@A-key@@ for toggling selection of all graphs, @@G-key@@ to grab a handle of a Bezier curve, @@S-key@@ for scaling, @@~Shift-MMB@@ for shifting the graphs as a whole, Mouse wheel for "zooming" etcetera.
*  Individual F-curves can be selected in the side panel (just use @@LMB@@ to select, @@~Shift-LMB@@ to select or deselect more curves) Alternative: use @@RMB@@ on the "vertices" that represent the keyframes, or on a Bezier curve handle.
* "Zooming" using thescroll wheel works, but scales both the horizontal (time-) axis and the vertical axis at the same time. You can use @@~Cntrl-MMB@@, and drag horizontally or vertically for //independent// scaling. Use the @@Home-key@@ for a scaling where "everything is in view".
* "All of  scene has gone". <br> [>img[layersImage|./blenderPicts/layersButtons.png]]Check the panel for visible layers. You might have deselected the layer wich contains your scene.
* "I cannot zoom in as far as I want"<br> This is a problem with perspective user views. First go to a predefined view like "front ortho" (@@Numpad-1@@), zoom in, and go back to perspective view. Now the zoom range has changed.
* "I can no longer rotate/scale objects (although grabbing still works)".<br>  [>img[manipulateCentersImage|./blenderPicts/manipulateCenterPoints.png]]Check the ''Manipulate Center point'' button
* When I add some object, the orientation doesn't match with what I see in my tutorial.<br> In the  "Editing" tab of the [[User Preferences|Configuration]], there is a setting called ''Align To:''. The default used to be "Align To View", but it has been changed into "Align To World". Many (older) tutorials still assume the "Align To View" setting.
* Although I have a material with textures, I don't see them in the 3D view (although the texture is visible when rendered). <br>
** Only textures with explicit UV mapping can be shown in the 3D window
** See [[Materials]] for more explanation, but check that the viewport shading [img(,20px)[texturedViewImage|./blenderPicts/texturedView.png]] is set to "Textured"
** In the properties panel of the 3D window (@@N@@ key) there is a ''Display'' panel. Use "GLSL" Shading to see results that are close to the final rendered images.
* The textures in the rendered images look pixelated.<br>Have a look at the [[rendering|Rendering]] settings. In particular, note that the resolution setting is scaled down to 50% by default.
* Rendering a scene only renders the part inside some dashed rectangle in camara view: deselect the "border" property in the render properties, or use Shift-B //outside// the camera view.
* The outline of my (selected) object has turned green, rather than orange. Problem: you have inadvertently introduced an "object Group" (for instance by using Cntrl-G in Object mode). Look at the "Object" properties, "Groups" subpanel, and remove from the group.
More testing...
A background, visible only when rendering the final image:
* In the "world" properties panel, you can select a "sky", where you can set colors for the horizon as well as the zenith (the point above you). It seems that when you select "real sky", the zenith color is used also for the nadir (the point deep down below you)
* A more interesting background can be created by using texturing. In the world properties panel you can click the texture button, and load a texture image. A problem is the appropriate mapping. There are special purpose images called "angular maps", which are spherical images that (usually) inlude a "sky" as well as a "ground".
For these specially prepared images, you can use a Blender texture coordinate settings like "Global" or "View".
 Blender has a special texture coordinate mapping mode called "AngMap" that should be used for angular maps. Also enable the "Influence" for "Horizon".
This Wiki collects information for the Blender 3D modeling tool. It is an //addition// to the [[official Blender documentation|]] and the many good [[tutorials|Documentation]] on the web. 
It contains mostly tips and short summaries of commands or procedures, without extensive explanation. 
Rigging & Skinning

* Body animation requires a skeleton structure called ''armature'' in Blender.
* You ''add an armature'' like all other objects, with the @@~Shift-A@@ menu. Initially it has a single //bone//.
* Use ''extrusion'' (@@E@@ key) on bone tips to create more bones. Use the standard editing techniques to scale and rotate bones. 
* A bone added by means of extrusion will be a //child// bone. If you repeat this, you get a bone hierarchy, starting with the first bone as root. You can check the parent-child relationship in the bone panel [img(20px,)[boneImage|./blenderPicts/bone.png]] for the armature properties. here you can also assign logical //names// to bones.
*  [>img[armatureImage|./blenderPicts/armatureData.png]]Manipulate the armature such that it is sitting inside the body mesh. Select ''~X-Ray'' in the Object Data for your armature, so you can "see" the armature inside a (solid) mesh. Then, make the armature the ''parent'' of the mesh: //First//, select the mesh, //second//, also select (@@~Shift-RMB@@) the armature. Then use @@~Cntrl-P@@ and "Set Parent To Armature Deform". For a first test, use  "With Automatic Weights". This will link each vertex  to the "nearest" bone.
* When the mesh is selected, you can use the ''Object Data'' panel  [img(20px,)[objectDataImage|./blenderPicts/objectData.png]] to see ''Vertex Groups''. Unless you chose "With Empty Groups" while parenting the mesh to the armature, there will be predefined vertex groups for all bones. 
* In Edit Mode, you can //see// which vertices are linked to some particular bone (ensure that no vertices are selected, then use the ''Select'' button for Vertex Groups)
* By selecting certain vertices, you can ''Add'' or ''Remove'' them from a Vertex Group. 

* The basics of animation still apply: see [[Animation Basics|Animation Basics]].
* However, the Graph Editor is no longer the preferred way of working with F-curves (there simply are too many F curves for a complete skeleton). Rather, use the //Dope Sheet// editor.
* Settings: 1) set Armature Display to "Stick", rather than Octahedron 2) Set Transform Mode to "Normal" (rather than "Global" or "Local"). This is useful for bone, as it aligns the Y rotation axis with the bone axis in Pose mode. 
* Note that for "posing" the "Rotate Manipulator" comes in handy. Just remember that you select one of the rings, then //rotate clockwise or anticlockwise//. You cannot "drag" the ring itself.
* Usually it is handy to enable "Automatic keyframe insertion". However, note that this inserts a keyframe as soon as you modify the keyframe bar, but only for those bones that have been //modified// (directly, or indirectly via inverse kinematics). (If //nothing// has changed, there won't be a new keyframe of course). This is fine, but often you want to take a "snapshot" of //all// relevant bones, not just the ones that actually changed. You can always add these later on by going to some keyframe, then press I while your mouse is over the dopesheet. Then choose, for instance, "Only selected channels". This will insert data for all bone that are currently selected (i.e. that are "blue" in the 3D window).
|Author|Eric Shulman|
|Description|list/jump to tiddlers viewed during this session plus "back" button/macro|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
see [[BreadcrumbsPluginInfo]]
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
<<option chkBreadcrumbsSave>> prompt to save breadcrumbs when 'Home' link is pressed
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order (most recent first)
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items

2011.02.16 2.1.4 in refresh(), use 'inline' instead of 'block' style (avoids unwanted linebreak).  In previousTiddler(), allow handling even if not in a tiddler so that back button can be placed in ~MainMenu or ~SidebarOptions.
| Please see [[BreadcrumbsPluginInfo]] for previous revision details |
2006.02.01 1.0.0 initial release
version.extensions.BreadcrumbsPlugin= {major: 2, minor: 1, revision: 4, date: new Date(2011,2,16)};

var defaults={
	chkShowBreadcrumbs:		true,
	chkReorderBreadcrumbs:		true,
	chkCreateDefaultBreadcrumbs:	true,
	chkShowStartupBreadcrumbs:	false,
	chkBreadcrumbsReverse:		false,
	chkBreadcrumbsLimit:		false,
	txtBreadcrumbsLimit:		5,
	chkBreadcrumbsHideHomeLink:	false,
	chkBreadcrumbsSave:		false,
	txtBreadcrumbsHomeSeparator:	' | ',
	txtBreadcrumbsCrumbSeparator:	' > '
for (var id in defaults) if (config.options[id]===undefined)

config.macros.breadcrumbs =  {
	crumbs: [], // the list of current breadcrumbs
	askMsg: "Save current breadcrumbs before clearing?\n"
		+"Press OK to save, or CANCEL to continue without saving.",
	saveMsg: 'Enter the name of a tiddler in which to save the current breadcrumbs',
	saveTitle: 'SavedBreadcrumbs',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var area=createTiddlyElement(place,"span",null,"breadCrumbs",null);
	add: function (title) {
		var thisCrumb = title;
		var ind = this.crumbs.indexOf(thisCrumb);
		if(ind === -1)
		else if (config.options.chkReorderBreadcrumbs)
			this.crumbs.push(this.crumbs.splice(ind,1)[0]); // reorder crumbs
			this.crumbs=this.crumbs.slice(0,ind+1); // trim crumbs
		if (config.options.chkBreadcrumbsLimitOpenTiddlers)
		return false;
	getAreas: function() {
		var crumbAreas=[];
		// find all DIVs with classname=="breadCrumbs"
		var all=document.getElementsByTagName("*");
		for (var i=0; i<all.length; i++)
			try{ if (hasClass(all[i],"breadCrumbs")) crumbAreas.push(all[i]); } catch(e) {;}
		// or, find single DIV w/fixed ID (backward compatibility)
		var byID=document.getElementById("breadCrumbs")
		if (byID && !hasClass(byID,"breadCrumbs")) crumbAreas.push(byID);
		if (!crumbAreas.length && config.options.chkCreateDefaultBreadcrumbs) {
			// no crumbs display... create one
			var defaultArea = createTiddlyElement(null,"span",null,"breadCrumbs",null); "none";
			var targetArea= document.getElementById("tiddlerDisplay");
		return crumbAreas;
	refresh: function() {
		var crumbAreas=this.getAreas();
		for (var i=0; i<crumbAreas.length; i++) {
			crumbAreas[i].style.display = config.options.chkShowBreadcrumbs?"inline":"none";
	render: function(here) {
		var co=config.options; var out=""
		if (!co.chkBreadcrumbsHideHomeLink) {
			createTiddlyButton(here,"Home",null,this.home,"tiddlyLink tiddlyLinkExisting");
		for (c=0; c<this.crumbs.length; c++) // remove non-existing tiddlers from crumbs
			if (!store.tiddlerExists(this.crumbs[c]) && !store.isShadowTiddler(this.crumbs[c]))
		var count=this.crumbs.length;
		if (co.chkBreadcrumbsLimit && co.txtBreadcrumbsLimit<count) count=co.txtBreadcrumbsLimit;
		var list=[];
		for (c=this.crumbs.length-count; c<this.crumbs.length; c++) list.push('[['+this.crumbs[c]+']]');
		if (co.chkBreadcrumbsReverse) list.reverse();
	home: function() {
		var cmb=config.macros.breadcrumbs;
		if (config.options.chkBreadcrumbsSave && confirm(cmb.askMsg)) cmb.saveCrumbs();
		story.closeAllTiddlers(); restart();
		cmb.crumbs = []; var crumbAreas=cmb.getAreas();
		for (var i=0; i<crumbAreas.length; i++) crumbAreas[i].style.display = "none";
		return false;
	saveCrumbs: function() {
		var tid=prompt(this.saveMsg,this.saveTitle); if (!tid||!tid.length) return; // cancelled by user
		var t=store.getTiddler(tid);
		if(t && !confirm(config.messages.overwriteWarning.format([tid]))) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var text='[['+this.crumbs.join(']]\n[[')+']]';
		var tags=t?t.tags:[]; tags.pushUnique('story');
		var fields=t?t.fields:{};
		displayMessage(tid+' has been '+(t?'updated':'created'));
	limitOpenTiddlers: function() {
		var limit=config.options.txtBreadcrumbsLimitOpenTiddlers; if (limit<1) limit=1;
		for (c=this.crumbs.length-1; c>=0; c--) {
			var tid=this.crumbs[c];
			var elem=story.getTiddler(tid);
			if (elem) { // tiddler is displayed
				if (limit <=0) { // display limit has been reached
					if (elem.getAttribute("dirty")=="true") { // tiddler is being edited
						var msg= "'"+tid+"' is currently being edited.\n\n"
							+"Press OK to save and close this tiddler\n"
							+"or press Cancel to leave it opened";
						if (confirm(msg)) {
					else story.closeTiddler(this.crumbs[c]);
// // PreviousTiddler ('back') command and macro
config.commands.previousTiddler = {
	text: 'back',
	tooltip: 'view the previous tiddler',
	handler: function(event,src,title) {
		var crumbs=config.macros.breadcrumbs.crumbs;
		if (crumbs.length<2) config.macros.breadcrumbs.home();
		else story.displayTiddler(story.findContainingTiddler(src),crumbs[crumbs.length-2]);
		return false;
config.macros.previousTiddler= {
	label: 'back',
	prompt: 'view the previous tiddler',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var label=params.shift(); if (!label) label=this.label;
		var prompt=params.shift(); if (!prompt) prompt=this.prompt;
			return config.commands.previousTiddler.handler(ev,this)
// update crumbs when a tiddler is displayed
if (Story.prototype.breadCrumbs_coreDisplayTiddler==undefined)
Story.prototype.displayTiddler = function(srcElement,tiddler) {
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	if (!startingUp || config.options.chkShowStartupBreadcrumbs)

// update crumbs when a tiddler is deleted
if (TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler==undefined)
TiddlyWiki.prototype.removeTiddler= function() {
Cameras offer convenient "viewpoints" and are used also when [[rendering|Rendering]]  the scene. By default you have only one camera (or none at all if you start with an "empty" scene). It is useful to add a few cameras to the scene:  
* Toggle between "camera view" and ordinary views by means of  @@~NumPad_0@@
* A camera is pretty useless as long as it  look into the wrong direction. To correct this you first use ordinary viewing commands to get the viewpoint you like. Then use @@~Cntrl-Alt-~NumPad_0@@ to align  with the current view, i.e the current view becomes the viewpoint for the active camera.
* When you have several cameras there is a (confusing) distinction between:
** a //selected// camera (it's "orange") and 
** the //active// camera (it has a solid triangle on top, whereas the rest has a wireframe triangle).  
** To make some camera the "active" camera, you first select it, then use @@~Cntrl-Numpad_0@@
** The active camera is the one that is used when you switch to camera view  or when you align with the current view.
* Add a new camera using the "Add" pulldown menu or use ~Shift-A, and select "Camera". 
** It is inserted at the place of the [[3D cursor|3DCursor]], but usually you don't care if you are going to align the camera with the view.  
** Take care: the newly added camera will be selected (it's orange) but it will not yet be the //active// camera, 
** So use @@~Cntrl-Numpad_0 then ~Cntrl-Alt-Numpad_0@@ in order to activate and align with the current view.
* After a first camera alignment, you might want to modify it //while looking through the camera view//. You can "fly" the camera with @@~Shift-F@@, see [[Viewing]].
* A viewpoint or camera has a certain distance to the scene. When you use the the mouse wheel you just change that distance. But a (perspective projection) camera also has a certain "focal length", just like the different lenses of an SLR camera. The effect of a telelens or wide-angle lens is //not// the same as simply moving closer or farther away from the scene.
**  For instance, with a a wide angle lens, 3D effects are more pronounced and when you go to far everything looks distorted. 
** With a telelens on the other hand, there is //less// "3D effect" and everything looks more flat.  This "focal length" of a camera can be set using the @@W key@@, where it is called "Camera Lens Angle" in the menu. You can also find it back in the "Object Data" for the camera object, where it is called "Focal length"
** Inside a camera view, you can enable/disable some dashed "helper lines". See the properties panel for cameras. 
** In camera view, you can use @@Shift B@@ and select a subimage to be rendered. In the Render properties panel, this selects the "border" property. Deselect this property, or use Shif B and drag outside the camera frame, to disable this setting.
You can configure many settings within Blender. 
*  [>img[editorTypesImage|./blenderPicts/editorType.png]]A Blender window can show a number of different windows and editors. Use the  lower left corner menu to select "User Preferences".
* If you change settings, don't forget to "Save As Default" (lower left corner). Note that "Save As Default" saves "everything", including the current 3D scene. So it is best to save user preferences with an empty scene.<br>
The Blender default settings are kept (in Windows) within a place like Users/userName/~AppData/Roaming/Blender Foundation/Blender, within a startup.blend file.
 We list a few useful preference settings: 
<<tabs userpreferences
Interface Interface InterfacePreferences
 Input Input InputPreferences
Editing Editing EditingPreferences
 File File FilePreferences
 System System SystemPreferences
[[Blender Tips Overview]]
The [[Blender web site|]] has anumber of [[useful links|]] with documentation and tutorials.
The """WiKi User Manual"""  has been upgraded recently for the new 2.6 versions, and it is not yet complete, and sometimes refers to older  (2.4) information.  (Watch the version info at the top of the pages)
There are a lot of useful [[tutorials|]] for versions 2.4, 2.5, and 2.6.
The user interface for versions 2.5 and 2.6 is largely the same, so you can use them all.
Tutorials for 2.4 might be confusing, so don't use these, at least not for the first steps.

A List of useful tutorials:
* [[Blender Cookie|]] has a whole series of seven introduction, that are recommended as the "Get Started with Blender" tutorials on  They are ok as short introduction but do not discuss modeling in any detail, nor does it deal with more complex issues like texturing, skinning, rigging, skeletal animation etcetera.
* [[Blender_3D_Noob_to_Pro|]] on [[WikiBooks|]] is a couple of good introdtary tutorials for the Blender interface and modeling.
* [[Blendtuts|]] has a more detailed tutorial for the interface,  including many useful customization tips. 
* Use @@~Cntrl-Alt-U@@ to open the User Preferences window. Don't forget to "Save As Default" when you like the new settings.
* "Release confirms": You can "drag" objects around with the R(ight) M(ouse) B(utton). With the Blender //default setting//, the object is then  "glued" to your mouse and you must //confirm// by a left-clicking or //abort// by right-clicking. Many people find this annoying. By selecting the "release confirms" option you must hold the RMB while dragging, and dragging stops as soon as you release RMB, which is what most of us would expect.
* "Align To": Determines the alignment of new objects that you add to a scene. Older versions of Blender, and many older tutorials, use the "Align To View" setting. The newer blender versions have "Align to World" as default.
* Use @@~Cntrl-Alt-U@@ to open the User Preferences window. Don't forget to "Save As Default" when you like the new settings.
* In the "File" tab you can select dirctories/folders for things like textures, or where rendered output should go. 
* Also useful: set the link to your favorite image editor here. It will be used for editing textures.
* The game engine is started with @@P@@.  (Quit with the @@Escape@@ key) Don't expect anything interesting by default: it will more or less look like a static (low quality) rendering. For a real "game" yu will have to add game logic/scripts etcetera.
* There is a ''Blender Game'' setting at the menu bar, usually at the top:
* There is a ''physics'' button on the properties window:
Note that this panel //differs// when you first switch the ''Engine'' to ''Blender Game'', rather than ''Blender Render''. For instance, with the game engine settings, you can select objects to be ''actors'' for the physics engine. (actors will feel forces, like gravity, en will start to move accordingly)
* [>img[logiceditorImage|./blenderPicts/logiceditor.png]]There is a ''Logic Editor'' window for adding "game controls".
|Author|Eric Shulman|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
The extended image syntax is:
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
2011.09.03 [1.2.3] bypass addStretchHandlers() if no '+' suffix is used (i.e., not resizable)
2010.07.24 [1.2.2] moved tip/dragtip text to config.formatterHelpers.imageSize object to enable customization
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 3, date: new Date(2011,9,3)};
var f=config.formatters[config.formatters.findByField("name","image")];
f.handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var width=lookaheadMatch[3];
		var height=lookaheadMatch[4];
		var tooltip=lookaheadMatch[5];
		var src=lookaheadMatch[6];
		var link=lookaheadMatch[7];

		// Simple bracketted link
		var e = w.output;
		if(link) { // LINKED IMAGE
			if (config.formatterHelpers.isExternalLink(link)) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) {
					// see [[AttachFilePluginFormatters]]
					e = createExternalLink(w.output,link);
					e.title = config.macros.attach.linkTooltip + link;
				} else
					e = createExternalLink(w.output,link);
			} else 
				e = createTiddlyLink(w.output,link,false,null,w.isStatic);

		var img = createTiddlyElement(e,"img");
		if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
		if(width||height) {
			var x=width.trim(); var y=height.trim();
			var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
			var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
			if (x.substr(0,2)=="{{")
				{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			if (y.substr(0,2)=="{{")
				{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} };;
			if (stretchW||stretchH) config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
		if(tooltip) img.title = tooltip;

		if (config.macros.attach && config.macros.attach.isAttachment(src))
			src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
		else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
			if (config.browser.isIE || config.browser.isSafari) {
					return false;
			} else
		w.nextMatch = this.lookaheadRegExp.lastIndex;

	tip: 'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size',
	dragtip: 'DRAG=stretch/shrink, '

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.statusMsg='width=%0, height=%1';'move';;;
	e.onmousedown=function(ev) { var ev=ev||window.event;
		return false;
	e.onmousemove=function(ev) { var ev=ev||window.event;
		if (this.sizing) {
			var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
			var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
			if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
			if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
			clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
		return false;
	e.onmouseup=function(ev) { var ev=ev||window.event;
		if (ev.shiftKey) {''; }
		if (ev.ctrlKey)  {;; }
		return false;
	e.onmouseout=function(ev) { var ev=ev||window.event;
		return false;
* Use @@~Cntrl-Alt-U@@ to open the User Preferences window. Don't forget to "Save As Default" when you like the new settings.
* In the "Input" tab, you can select your mouse and keyboard settings, like 3-button emulations, or "Numpad" emulation (useful for laptops) 
* "Orbit Style" seems to be "Turntable" in version 6, which is what you want, rather than the (older) "Trackball" method.
* It is now possible to (re-)define the user interface element for almost everything in the Input preferences tab. If you change something you can restore easily. (The "Remove key map item " button changes into a "Restore key map item")
* Also have a look at the key/mouse mappings for all sorts of actions. 
* Note that on top of the list of key mappings, you can select (or add/remove)  a complete key configuration. There is even a predefined key configuration for Maya.
!!Which versions?
The most recent versions are 2.59 and 2.6x. They share the same user interface. The older 2.49 version is still popular in books and web tutorials, but has a rather different user interface, so check the version when you follow some tutorial. 
!! What do we use
Currently we use the 2.64a version
!! Downloads
Download from [[|]].  We are using version 2.6x
* There are zip files for all types of systems. 
** For Windows there are (also) installers, but even here it might be more convenient in the end to use the zip file.
* Allocate some "Blender" directory/map/folder and unzip the blender archive over there. The blender executable/app is inside the unzipped archive. You can run it without any further installation.
* If you put your Blender folder on a memory stick you can run it on various systems. You can even unzip, say, a windows version and a Mac OSX version in your Blender folder, and work both on Macs and Windows machines. 
* For easy migration you should also save/load files from within the Blender directory. 
(See [[Configuration]])
Some generic remarks about the Blender User Interface:
* The ''screen'' is subdivided in a number of (non overlapping) windows. 
** Typically a "3D View" in the center, a "Properties" windowon the right, an "Outliner" at the top-right, and a "~TimeLine" at the bottom.  The 3D windowhas two panels that you toggle with @@T@@ (''tool shelve'') and @@N@@ (''properties panel'')
**  [>img(,4%)[editorTypesImage|./blenderPicts/editorType.png]] All these windows might //look// very different, but basically, they are all of the same kind: you can resize each of them, you can change the type of each window.   Use the menu, usually at the bottom left or top left.
** You can split windows or merge them into one.  [>img[splitImage|./blenderPicts/split.png]] (Drag the little triangle horizontally or vertically //into// the window to split, drag it into a neighboring window in order to merge.
** There is a shortcut: @@~Cntrl-Alt-Q@@, that splits the 3D View into four.
** @@~Cntrl-UpArrow@@ toggles between normal windows layout windows and a single selected window.
**  [>img[screenLayoutImage|./blenderPicts/screenLayout.png]]The screen layout can be selected with one of the drop down menus at the top. You can also use @@~Cntrl-LeftArrow@@ and @@~Cntrl-RightArrow@@ to switch between screens) Use this to select the layout that fits the work stage that you are at, like "modeling", "UV editing", "animation". 
** You can add/remove your own window layouts with the  [img(25px,)[addRemoveImage|./blenderPicts/addRemove.png]] buttons.
* Inside a "button bar" or any other 2D panel, you can scroll with the mouse wheel, or with the M(iddle)M(ouse)B(utton), called @@MMB@@ in Blender tutorials.<br> You can even "zoom" a 2D panel with @@~Cntrl-MMB@@
*  Windows do not overlap. But If you have a large monitor, or even a second monitor, you can create a //duplicate// Blender interface with @@~Cntrl-Alt-W@@ and drag it to the other monitor. Note that the duplicate is still linked to the original one.
* Maybe more useful: you can duplicate just a single //window// by @@~Shift-Clicking@@ inside the "split triangles" of that window.
* A few ''generic commands'':
** ''Selection'' is usually by //right//-clicking
** ''Confirmation'' is by //left//-clicking
** ''Undo'' action: @@~Cntrl-Z@@. The accompanying ''redo'' action: @@~Cntrl-Y@@<br>The effect of the 
** For more elaborate ''undoing'' there is even  an ''undo menu'': @@~Cntrl-Alt-Z@@
**  [>img[objectModeImage|./blenderPicts/objectMode.png]]Mode switching: Use the pull-down menu for mode selection to select one of the modes: ''Object Mode'', ''Weight Paint'', ''Texture Paint'', ''Sculpt Mode''.
** For each of the main modes you can switch between  ''Edit Mode'' and the main mode by means of the @@Tab@@ key.  
Blender (as well as any other 3D modeling tool) has its own peculiar way of using the mouse and keyboard. Not everyone likes the Blender GUI, although experienced modelers often claim you work faster in Blender. Anyway, note that with the new (2.5/2.6) versions of Blender you can easily [[adapt the interface|Configuration]].  You can change the way the mouse behaves, select key configurations, and there is even a Maya key configuration.
* Use @@~Cntrl-Alt-U@@ to open the User Preferences window. Don't forget to "Save As Default" when you like the new settings.
*  Deselect "Show Python Tooltips" if  you are currently not interested in Python scripting.
* Select "Rotate Around Selection" allows for a more natural way of rotating the scene.
* Auto Perspective: //automatically// switches between "perspective" and "orthogonal" views.  (Use Numpad-5 for manual switching)
** //"User" views// use perspective projection, which is nice for judging how it will look eventually.
**  //Predefined views// like "Front View" or "Top View" use orthographic projection, which is usually better when you are //designing and editing//. 
* Zoom To Mouse Position is nice: you just move (don't click) your mouse and then zoom to that position.
Lighting in Blender is mainly useful if you want to do rendering inside Blender itself.  If you //export// your models, then usually the application or "game engine" that you use will do the lighting, and that might be quite different from Blender lighting. Especially when the application uses real-time rendering (like games) then the lighting models will be much simpler than Blenders slow-but-advanced algorithms like ray tracing. 
* Lighting effects are not visible in the normal 3D editing window; you must [[render|Rendering]] the scene in order to see it at work.
* By default your scene has a single ''pointlight''. Usuall, you will add some more: use @@~Shift-A@@ or @@Add@@ from the main menu, and choose a "Lamp". 
[[Vertices, Edges, Faces]]
[[Animation Basics]]
[[Body Animation]]
[[Game Engine]]
* In ~FireFox, you cannot import new Tiddlers. Solution use IE instead.
* In IE you //can// import, but you cannot //save//. Solution: in Tools|~InternetOption|Security  set the level for the Local Intranet to "low"
* has lots of useful tiddlers we use:
** ~BreadCrumbsPlugin  (breadcrumb trail at top of window)
** ~SinglePageModePlugin  (Show one Tiddler at a time)
** ~ImageResizePlugin ([img(20px+,)[.... ]] yields an image size 20px, resizable
** ~IncludePlugin  : < <include "~BlenderTips.html" hide:true> > loads ~BlenderTips.html when the Tiddler containing this macro is activated
* excludeLists is a tag that "hides" a tiddler from the ~TimeLine and All lists. The Tags list has a special excludeLists entry, that reveals all "hidden" tiddlers
* With some object selected, click the ''material properties'' button [img[objectModeImage|./blenderPicts/materialProps.png]]   from the properties menu.[>img[objectModeImage|./blenderPicts/propsMenu.png]]
* If the object doesn't have a material yet, add it with the ''new'' button. Type a meaningful name in the name field. 
* The basic settings are enough for simple colors and some transparency. (See [[Texturing]] for more sophisticated materials.} 
* Note that the "effect" that you see in the the 3D window is only a //preview//, and many effects are not (properly) shown. For instance, transparency is //not// shown. You must //render// the scene (Use the menu or the @@F12@@ key) to see the full efect.
* The Blender game engine uses a "real-time" render style that is close to the 3D View window. The Blender Render engine uses a much slower form of rendering, based on ray tracing, which yields nicer images. 
*Note that in the object properties [img[objectModeImage|./blenderPicts/objectProps.png]] (not material properties) you can select the ''Display'' mode for the 3D preview. It is somewhat misleading, since it does not set the display mode as such, but rather the "//maximum//" draw type for this object, where "textured" is "best", "solid" is somewhere in te middle, and "wireframe" is lowest.
** You must select this object property to be  ''Textured'' rather than ''Solid'' or ''Wireframe'' in order to see texturing in preview mode. But that is not enough: 
** you must //also// select the proper (i.e. "Textured")  Viewport shading with the buttons  [img(,20px)[texturedViewImage|./blenderPicts/texturedView.png]] in the 3D view window.
** Finally, only "Image" textures can be shown in the 3D preview. Moreover, you must assure that //texture coordinates// have been assigned, or else the image will probably look "warped", or will not show at all. Usually, this implies that you must select "UV" Mapping in the Texture properties panel, and often you must use the "UV unwrap" tools to assign and correct texture coordinates.
* In the "Properties" panel of tghe 3D view (@@N@@ key) there is yet another "Display" setting. It affects and  that modifies the Viewport shading:
** Select a "Shading" mode:
*** Singletexture/Multitexture: simpley/oldfashioned methods for texturing. The results are affected by lighting as well, but the results differ considerably from the final rendered images.
*** GLSL: modern, shader based texturing that tries to mimic the results of rendering. It is still a ''real-time'' model, typical for game engines and not a sophisticated model based on ray tracing, like the one used by the "Blender Render" engine.
** There is a strange option called "Textured Solid", that is to be used in conjunction with a //solid// (!) viewport shading setting. It shows a simple texture image on the object //without// any lighting calculations, and ignoring any texture settings or texture  coordinates that you might have assigned. Apparantly to be used for a textured preview without the overhead of (potentially slow) lighting calculations, which might be useful on low-end graphics hardware. 
* Note that all of the above settings have //no// influence on the finally rendered image.
* Another setting called  ''Shading'', can be found in the ''Object Tools'' on the left. (Ensure that the 3D window is in "Object Mode"). The default setting is ''flat'', which shows clearly the faces of a mesh. The ''smooth'' setting gives a nice view, both in preview and final rendered image. "Flat" is sometimes useful during modeling, since you can see more easily the individual polygons or "faces" as they are called in Blender. For final rendering "flat" shading is never used, unless you would like to see a nice "disco" sphere.
* Modify the ''diffuse color'' and the ''specular color'' by clicking into the field for that color, and select the color. The "intensity" setting below the color fields do not add anyhing "new"; they just make the color darker. The ''Hardness'' setting for the specular color determines the size of the reflectance spot that you see, especially on spheres. 
 [>img[wrenchImage|./blenderPicts/wrench.png]]Modifiers are "effects" that you add to objects with the modifier panel from the properties panel on the right. 
* When you ''add'' a modifier, it is added to ''modifier stack'', that you see in the panel. 
* When you have more than one modifier, they are applied one after another, from "top" to "bottom" of the stack. There are buttons  [img[modifierbuttonsImage|./blenderPicts/modifierbuttons1.png]] for shifting a modifier "up" or "down" within the stack, or to delete it from the stack
* While on the stack, modifiers are //applied// only during //visualization//. For instance, the Subdivision surface modifier makes the visual appearnce of object more smooth, but when you go into edit mode you stll see the original mesh, usually as a kind of "cage", and you can manipulate these vertices etc. from the original only. 
* You can make effects "permanent" by using the ''apply'' button. (You can use this button for the modifier at the //top//) As soon as you use the ''apply'' button, the effect is calculated and the original is //replaced// by the modified version, and the modifier disappears from the stack. Now you can work with the vertices etc from the modifid version, but the original "cage" has gone, forever.
 [>img[objectModeImage|./blenderPicts/objectMode.png]] Ensure that you are in ''Object Mode''
!! Viewing objects
*  [>img[objectModeImage|./blenderPicts/propsMenu2.png]]In the object properties you can select the ''Display'' mode for the 3D preview.  You must select ''Textured'' rather than ''Solid'' or ''Wireframe'' in order to see texturing in preview mode. This has no effect on the finally rendered images.
!!Selecting objects
* Select by //right//-clicking. (@@RMB@@)<br>If you really don't like this, you can [[configure|InputPreferences]] this to select with LMB. (Experienced modelers claim that RMB works better in the end)
* Select //extra// objects (or //deselect// already selected objects) by means of @@~Shift-RMB@@. <br>Note that the last object that was added to the selection is more bright than the rest.
* Toggle between "select all" and "select nothing" using the @@A @@ key.
!!Adding and Deleting  objects
* Ensure that you are in ''Object Mode'', or else you will likely "add" new stuff  to the mesh that you are currently editing.
* Add new objects with @@~Shift-A@@ or with the ''add'' menu from the menubar at the top left. The new object will be inserted at the location of the [[3D Cursor|3DCursor]]
* Delete selected objects by means of the @@X@@ key or the @@Delete@@ key.
!!Manipulating objects
* Ensure that you are in ''Object Mode''.
* Select one (use @@RMB@@) or more (use @@~Shift-RMB@@) objects. 
* Use the @@R@@, @@S@@, or @@G@@ keys to ''rotate'', ''scale'', or ''grab'' the object(s)
** Use the mouse, finish with @@left click@@, abort by @@right click@@ or the @@Escape@@ key.
** By pressing the @@X@@ once rotate (or scale, translate) around the ''world X-coordinate'' axis. 
** By pressing @@X@@ once more, you rotate around the ''objects own X-axis''. 
** Pressing @@X@@  a third time goes back to ''unconstraint'' rotation.
** Of course, the @@Y@@ and @@Z@@ keys work similar for the other two axes.
!! Rendering objects
* On the tool shelve (usually on the left) you can select the Shading mode: Smooth or Flat. This affects both  the preview in the 3D window and the final rendered images.
!Rendering still images
* Click the Render button [img[renderProps|./blenderPicts/renderProps.png]] from the properties menu.
** For a still image, there are straight forward settings for image resolution and ~Anti-Aliasing<br>Note the "percentage scale" below the resolution settings: for some reason its default setting is only 50%. <br> Also note that the resolution need not be limited to your monitor resolution; rendering can produce pictures of any resolution, although rendering times goes up rapidly if you choose higher levels. 
** Note that "zooming in" on a rendered image is different from zooming in in a real-time render engine. The rendered image is just thta: an //image//, and when you zoom in you will see pixelation.
** For a still image, the "Output" field at the bottom is ignored (it is used for animation rendering). If you want to save a copy of the rendered image, you can do so in the ''image'' menu of the window showing the rendered image.
* Use @@F12@@, or click ''Image'' in the Render window, or select "Render Image" from the pulldown menus on the top left menu bar in order to render a ''single image''. (Use @@Escape@@ to go back to normal editing)
* Note that the image that is rendered is //what the active camera sees//. So, use [[Viewing]] techniques to ensure that your (active) camera looks from the right angle. 
* Also note that rendering is based upon the //lights// in your scene. If there are no lights at all then objects will usually appear to be totally black. For nice results you often need two or three lights at different positions.
!Rendering animations
* You use the same rendering window in the properties window as for still images, but more settings are relevant.
* Use @@~Cntrl-F12@@, or click ''Animation'' in the Render window, or select "Render Animation" from the pulldown menus on the top
* You can select "Resolution" and "Aspect Ratio" and "Frame Rate" by hand, but it is more convenient to select one of the predefined "Dimensions". This will automatically select parameters like resolution. 
* You can select a Frame Range if you do not want to record the full animation.
* When you start rendering, you will see Blender rendering one frame at a time. (It will take quite some time). You must specify what to do with the rendered images:
** The default setting is to store these as individual .png images in the output directory.
** If you want a different image format, or when you want a //movie//, you must specify this in the ''Output'' panel.
** Do //not// select "AVI Raw" as movie format, unless you want to fill up you hard disk.
** Rather chose more reasonable compressed formats like H.264
* For animations, the ''Output'' field denotes the place where the animation will be stored.
** If you specify a //directory// like "C:\~BlenderOut" then that's where output will be stored. So you will see image files like "0001.png", "0002.png", etcetera.
** If you specify a directtory plus file-prefix, like "C:\~BlenderOut\snapshot", then results will be stored in the director ("C:\~BlenderOut"), but image names will start with the specified file prefix. So will see images like "snapshot0001.png", "snapshot0002.png" etcetera.
** The directory can be specified by means of a //relative path// like "..\~RenderOut\snapshot". In that case the directory is relative to the directory for the render executable.
* By default an animation is stored in the form of a series of (png) pictures, one picture per frame. In the output panel for Render properties you can select other formats, including a number of //movie// formats. Note that not all formats are supported with all movie players. Always avoid the "AVI Raw" format, unless you really want to fill up your hard disk.  "Avi Codec" usually works, but still produces large files. H.264 is more modern (so not always supported). Ensure that for formats like H.264 the //Encoding// format matches the file format
* Scripts are entered using the Blender ''TextEditor'' window
* (text-) filename should end with the .py postfix (python script)
* Interactive "testing/debugging" requires @@~Alt-P@@ ("run Script")
* Scripting has changed a lot since the 2.49 version, and much of previous versions is now obsolete.
* See [[the Blender_3D:_Noob_to_Pro tutorial |]] It is under revision, but already has a section Blender called " 2.5x Scripting/Introduction" with useful information: how to create a script, how to link it to the Blender GUI, and how to turn it into an ''installable addon''. 
* Installable addons need a "bl_info" definition.  The saved .py script file can ne ''installed'' as an Add-on via the User Preferences Addons menu. (Just use ''Install Add-on'', browse for the script. After installation, you should ''enable'' the addon in the User Preferences. Save As Default if you want to automatically enable it for future sessions.
|Author|Eric Shulman|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
>see [[SinglePageModePluginInfo]]
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
2010.11.30 2.9.7 use story.getTiddler()
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 1.0.0 Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 7, date: new Date(2010,11,30)};
config.paramifiers.SPM = { onstart: function(v) {
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
} };
if (config.options.chkSinglePageMode==undefined)
if (config.options.chkSinglePagePermalink==undefined)
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
if (config.options.chkTopOfPageMode==undefined)
if (config.options.chkBottomOfPageMode==undefined)
if (config.options.chkSinglePageAutoScroll==undefined)
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();

if (Story.prototype.SPM_coreDisplayTiddler==undefined)
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=story.getTiddler(title); // ==null unless tiddler is already displayed
	var opt=config.options;
	var single=opt.chkSinglePageMode && !startingUp;
	var top=opt.chkTopOfPageMode && !startingUp;
	var bottom=opt.chkBottomOfPageMode && !startingUp;
	if (single) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				if (opt.chkSinglePageKeepEditedTiddlers) return;
				// if tiddler to be displayed is already shown, then leave active tiddler editor as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
	else if (top)
	else if (bottom)
	if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (single || top))
		else if (bottom)
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=story.getTiddler(title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		// scroll to top of page or top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
		// if animating, defer scroll until after animation completes
		var delay=opt.chkAnimate?config.animDuration+10:0;

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
Some pointers and tips for using the Blender 3D modeling tool
Blender Tips
* Use @@~Cntrl-Alt-U@@ to open the User Preferences window. Don't forget to "Save As Default" when you like the new settings. 
* In the "System" tab, you can change many settings, including """OpenGL""" settings.
** Enable VBO's. 
** Select some useful level of Anisotropic Filtering. If you have really basic graphics hardware you might leave it disabled.
Some text for the test
* UV Mapping:
** Use two windows: one 3D view, one UV/Image Editor. Load the texture image in the Image Editor.
** With the 3D Window in Edit Mode, the Mesh Tools (on the tools shelve) has a UV Mapping section.
** When you select all vertices, then use the ''Unwrap'' button, the mesh is flattened and shown in the UV/Image Editor panel. There, you use normal editing command  (scale, grab etcetera) to position the unwrapped vertices at the correct position over the texture image.
** When the original mesh is a closed shape, the unwrapper will have to "cut" it somewhere. The fully automatic method usually goes terribly wrong, so you have to go back to the 3D window, select a number of edges, and use ''Mark Seam'' (either from the UV Mapping tools, or from the ~Mesh-Edges menu) The seam will then be used by the unwrapper in the next unwrap action.For complicated shapes you may want to mark several seams. 
** Texture coordinates ("UV Vertex") can be seen in the ''properties panel'' of the UV unwrap. (@@N@@ key). Set the coordinates to ''normalized'' to see the cursor location in the same UV space.
* Use @@Z@@ to toggle between ''solid'' and ''wireframe'' mode. 
!! Selecting
* [>img[editModeImage|./blenderPicts/editMode.png]] First ensure that you are in ''Edit Mode''. Use @@Tab@@ to toggle between Object Mode and Edit Mode.
* Choose the correct ''selection mode'' [img(45px,)[selectModeImage|./blenderPicts/selectMode.png]] (Choose //vertices//, //edges//, or //faces//)
* The @@A@@ key is vital to quicky select "//all//" or "//nothing//".
* Select individual elements as usual, using @@RMB@@ and @@~Shift-RMB@@.
* Use the @@B@@ key, then drag to select all elements inside the rectangle. Use @@B@@ with @@MMB@@ to //deselect//.
* Use the @@C@@ key (and the mouse wheel) to select with a circle-shaped tool. Use @@C@@ with @@MMB@@  to //deselect//
*  [>img[limitSelectionImage|./blenderPicts/limitSelection.png]]There is a ''Limit selection to visible'' button (''on'' by default) so that only "visible" elements can be selected. If you turn this ''off'', vertices, edges, or faces on the backside become visible and can be selected as well.
* Use modifiers like @@Alt@@ when selecting. This will select complete "loops" of edges or faces.
| Grab | @@G@@ | Moves all selected elements |
| Extrude | @@E@@ | Use @@X@@, @@Y@@, or @@Z@@ to add/remove constraint  |
| Add vertices | ~Cntrl-LMB | Edges are added automatically |
| Add Face | @@F@@ | Select three or four vertices |
| Delete | @@X@@ or @@Delete@@ |  pops up a menu |
| Merge |  @@~Alt-M@@ |  also on the "specials" menu |
| Undo |  ~Cntrl-Z  | Can be used multiple times |
| "specials" menu | @@W@@ |  |
* Rotating and Moving the scene as a whole is done using the Middle Mouse Button) Assuming the [[''Orbit Style''|InputPreferences]] is ''Turntable'' (the default), moving "horizontally" spins around the Z axis, moving vertically "tilts" the ground plane.
* Normally, you rotate around the center of the viewport, but it is difficult to see.  You can [[configure|InterfacePreferences]] to rotate around the //selected object//, which sometimes feels more naturally.
* The Mouse wheel //zooms in and out//.  You can [[configure|InterfacePreferences]] the interface to "Zoom to Mouse Position".
* Keys on the "Numeric Keypad" or "@@~NumPad@@" are very useful ( [[Emulate the NumPad|InputPreferences]] when necessary)
* [[Configure|InterfacePreferences]] the interface by enabling "Auto Perspective", so views like "front view" will automatically switch to "orthographic".
* Note that for Blender, the Z-axis is "upwards". In many game engines the Y-axis is "up", so take this into account.
* When you work on some particular object, there are some useful views:
** @@~NumPad-.@@ (~NumPad-"dot") sets the view to the //currently selected object//
** @@~NumPad-/@@ toggles between //local view// and //global view//. In local view you see just the //selected object//.
* Zoom in on some part of the scene:   @@~Shift-B@@, then drag the rectangle you want to zoom in to.
* You can "fly" the viewpoint with @@~Shift-F@@. Use the mouse and @@WASD@@ keys to look around  Finally "confirm/stop moving" by using the @@space bar@@, or by clicking left, or "Cancel" by means of the@@ Escape@@ key. There are many more keys for "flying", just have a look at the key bindings for "~View3D Fly Modal" in the [[user preferences|InputPreferences]].
* @@~NumPad_0@@ toggles between normal view and [[camera view|Cameras]].
* Got lost completely? use the @@Home key@@. 
|Rotate Scene | MMB | (or Alt LMB when you emulate a 3-button mouse) |
|Move Scene |  ~Shift-MMB ||
|Zoom Scene | Mouse Wheel | or  @@+@@ and @@-@@ on the main keyboard or the ~NumPad.|
|Fly | ~Shift-F | Use mouse and keys, Stop with spacebar |
|View Selected Object | Numpad .    |    ~Numpad-Dot |
|Center view to 3D Cursor | ~Cntrl-Numpad .    |   ~Control-Numpad-Dot |
|View All | Home | or ~Cntrl-C |
|Top View, Front View, Right View |  ~NumPad_7, ~NumPad_1, ~NumPad_3  | Use Cntrl to select bottom, back or left view. |
|Perspective/Orthographic | Numpad_5 | Toggle for //perspective// or  //orthographic// projection |
|Orbit Scene |~NumPad_4/6/2/8 | Use Cntrl to "pan" |
|Local view |Numpad /  |  ~Numpad-Slash Toggle. |
|Align Camera to View |  ~Cntrl-Alt-Numpad_0 | The //active// (not the //selected//)  camera is used. |
|Activate camera| ~Cntrl-Numpad_0 | Make the //selected// camera the //active// camera. |