<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.136.110.214</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.136.110.214"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/84.136.110.214"/>
	<updated>2026-05-06T16:46:33Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Tipps_und_Tricks&amp;diff=24054</id>
		<title>D3.js - Tipps und Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Tipps_und_Tricks&amp;diff=24054"/>
		<updated>2019-09-03T16:42:42Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aktionen abhängig von den Daten ausführen ==&lt;br /&gt;
&lt;br /&gt;
Will man beim Daten abarbeiten bestimmte Aktionen abhängig von den Daten Ausführen kann man in vielen Fällen eine anonyme Funktion einsetze oder man nutzt eine Filterfunktion:&lt;br /&gt;
&lt;br /&gt;
Anonyme Funktion für ein HTML-Attribut.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
g.selectAll(&amp;#039;g&amp;#039;)&lt;br /&gt;
  .data(root.descendants())&lt;br /&gt;
  .enter().append(&amp;#039;g&amp;#039;)&lt;br /&gt;
  .attr(&amp;quot;class&amp;quot;, &amp;quot;node&amp;quot;)&lt;br /&gt;
  .append(&amp;#039;path&amp;#039;)&lt;br /&gt;
  .attr(&amp;quot;display&amp;quot;, function (d) { return d.depth ? null : &amp;quot;none&amp;quot;; }); // do not show root element&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Filterfunktion&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
newSlice.filter(d =&amp;gt; (d.depth &amp;gt; 2))&lt;br /&gt;
    .on(&amp;#039;click&amp;#039;, d =&amp;gt; {&lt;br /&gt;
      d3.event.stopPropagation();&lt;br /&gt;
      focusOn(d);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Text Label ausrichten ==&lt;br /&gt;
=== In Pie Chart Segmenten ===&lt;br /&gt;
Beispiel 1 - Als Speichen oder waagrecht oder tangential&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  // Populate the &amp;lt;text&amp;gt; elements with our data-driven titles.&lt;br /&gt;
        g.selectAll(&amp;quot;.node&amp;quot;)&lt;br /&gt;
            .append(&amp;quot;text&amp;quot;)&lt;br /&gt;
            .attr(&amp;quot;fill&amp;quot;,&amp;quot;#FFF&amp;quot;)&lt;br /&gt;
            .attr(&amp;quot;transform&amp;quot;, function(d) {&lt;br /&gt;
                return &amp;quot;translate(&amp;quot; + arc.centroid(d) + &amp;quot;)rotate(&amp;quot; + computeTextRotation(d) + &amp;quot;)&amp;quot;; })&lt;br /&gt;
            .attr(&amp;quot;dx&amp;quot;, &amp;quot;-25&amp;quot;)&lt;br /&gt;
            .attr(&amp;quot;dy&amp;quot;, &amp;quot;.5em&amp;quot;)&lt;br /&gt;
            .text(function(d) { return d.parent ? d.data.name : &amp;quot;&amp;quot; });&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
function computeTextRotation(d) {&lt;br /&gt;
      var angle = (d.x0 + d.x1) / Math.PI * 90;&lt;br /&gt;
      // Avoid upside-down labels&lt;br /&gt;
      //return (angle &amp;lt; 120 || angle &amp;gt; 270) ? angle : angle + 180;  // labels as rims&lt;br /&gt;
      return (angle &amp;lt; 180) ? angle - 90 : angle + 90;  // labels as spokes&lt;br /&gt;
      //return 0 // labels always horizontal&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Beispiel 2 - gebogener Text entlang des Kreisbogens&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
const middleArcLine = d =&amp;gt; {&lt;br /&gt;
  const halfPi = Math.PI/2;&lt;br /&gt;
  const angles = [x(d.x0) - halfPi, x(d.x1) - halfPi];&lt;br /&gt;
  const r = Math.max(0, (y(d.y0) + y(d.y1)) / 2);&lt;br /&gt;
  const middleAngle = (angles[1] + angles[0]) / 2;&lt;br /&gt;
  const invertDirection = middleAngle &amp;gt; 0 &amp;amp;&amp;amp; middleAngle &amp;lt; Math.PI; // On lower quadrants write text ccw&lt;br /&gt;
  if (invertDirection) {&lt;br /&gt;
    angles.reverse();&lt;br /&gt;
  }&lt;br /&gt;
  const path = d3.path();&lt;br /&gt;
  path.arc(0, 0, r, angles[0], angles[1], invertDirection);&lt;br /&gt;
  return path.toString();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
newSlice.append(&amp;#039;path&amp;#039;)&lt;br /&gt;
    .attr(&amp;#039;class&amp;#039;, &amp;#039;hidden-arc&amp;#039;)&lt;br /&gt;
    .attr(&amp;#039;id&amp;#039;, (_, i) =&amp;gt; `hiddenArc${i}`)&lt;br /&gt;
    .attr(&amp;#039;d&amp;#039;, middleArcLine);&lt;br /&gt;
&lt;br /&gt;
const text = newSlice.append(&amp;#039;text&amp;#039;)&lt;br /&gt;
    .attr(&amp;#039;display&amp;#039;, d =&amp;gt; textFits(d) ? null : &amp;#039;none&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
text.append(&amp;#039;textPath&amp;#039;)&lt;br /&gt;
    .attr(&amp;#039;startOffset&amp;#039;,&amp;#039;50%&amp;#039;)&lt;br /&gt;
    .attr(&amp;#039;xlink:href&amp;#039;, (_, i) =&amp;gt; `#hiddenArc${i}` )&lt;br /&gt;
    .style(&amp;#039;stroke&amp;#039;, &amp;#039;#fff&amp;#039;)&lt;br /&gt;
    .text(d =&amp;gt; d.data.name);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element anhängen statt einfügen ==&lt;br /&gt;
Standardmäßig verkettet man Elemente so dass das nächste immer ein Kind Element des vorigen ist.&lt;br /&gt;
Manchmal (z.B. bei Labels) möche man aber ein Element als Nachfolger nicht als Kind anlegen.&lt;br /&gt;
&lt;br /&gt;
Dazu nutzt man ein selectAll um auf die vorher angelegten Elemente erneut zuzugreifen. &lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
g.selectAll(&amp;#039;g&amp;#039;)&lt;br /&gt;
  .data(root.descendants())&lt;br /&gt;
  .enter().append(&amp;#039;g&amp;#039;)&lt;br /&gt;
  .attr(&amp;quot;class&amp;quot;, &amp;quot;node&amp;quot;)&lt;br /&gt;
  .append(&amp;#039;path&amp;#039;)&lt;br /&gt;
  .attr(&amp;quot;display&amp;quot;, function (d) { return d.depth ? null : &amp;quot;none&amp;quot;; }) // do not show root element&lt;br /&gt;
  .attr(&amp;quot;d&amp;quot;, arc)&lt;br /&gt;
  .attr(&amp;#039;id&amp;#039;,function(d){return &amp;#039;path_&amp;#039; + d.data.id})&lt;br /&gt;
  .style(&amp;#039;stroke&amp;#039;, &amp;#039;#fff&amp;#039;)&lt;br /&gt;
  .style(&amp;quot;fill&amp;quot;, function (d) { return color((d.children ? d : d.parent).data.name)})&lt;br /&gt;
  .on(&amp;quot;click&amp;quot;,toggleActive);&lt;br /&gt;
&lt;br /&gt;
// Populate the &amp;lt;text&amp;gt; elements with our data-driven titles.&lt;br /&gt;
g.selectAll(&amp;quot;.node&amp;quot;)&lt;br /&gt;
  .append(&amp;quot;text&amp;quot;)&lt;br /&gt;
  .attr(&amp;quot;fill&amp;quot;,&amp;quot;#FFF&amp;quot;)&lt;br /&gt;
  .attr(&amp;quot;transform&amp;quot;, function(d) {&lt;br /&gt;
  return &amp;quot;translate(&amp;quot; + arc.centroid(d) + &amp;quot;)rotate(&amp;quot; + computeTextRotation(d) + &amp;quot;)&amp;quot;; })&lt;br /&gt;
  .attr(&amp;quot;dx&amp;quot;, &amp;quot;-25&amp;quot;)&lt;br /&gt;
  .attr(&amp;quot;dy&amp;quot;, &amp;quot;.5em&amp;quot;)&lt;br /&gt;
  .text(function(d) { return d.parent ? d.data.name : &amp;quot;&amp;quot; });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Data_Handling_Basics&amp;diff=24053</id>
		<title>D3.js - Data Handling Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Data_Handling_Basics&amp;diff=24053"/>
		<updated>2019-09-03T10:08:34Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: /* Data Patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Data Joins ==&lt;br /&gt;
 https://www.d3indepth.com/datajoins/&lt;br /&gt;
D3.js kann Daten mit Knoten im Dom verbinden (join). Durch diese enge Verbindung von grafischen HTML Elementen und den Daten wird die Darstellung sehr effizient.&lt;br /&gt;
&lt;br /&gt;
Hat man 3 Daten, kann man diese z.B. mit 3 Divs verarbeiten. &lt;br /&gt;
&lt;br /&gt;
Dazu gibt es die Funktionen Enter und Exit, die fehlende oder überschüssige Knoten hinzufügen / entfernen.&lt;br /&gt;
&lt;br /&gt;
== Datenformate ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enter / Exit Funktion ==&lt;br /&gt;
 https://www.d3indepth.com/enterexit/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data Patterns ==&lt;br /&gt;
Beispiele für Data Handling&lt;br /&gt;
=== Beispiel - Verständnis für Generatoren ===&lt;br /&gt;
Die Generatoren für Basis Shapes funktionieren alle auf ähnlich. Hier einfache Beispiele.&lt;br /&gt;
&lt;br /&gt;
Linie (einzelnes Segment)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var lineData = [&lt;br /&gt;
  {&amp;#039;x&amp;#039;: -5, &amp;#039;y&amp;#039;: 5},&lt;br /&gt;
  {&amp;#039;x&amp;#039;: 5, &amp;#039;y&amp;#039;: -5},&lt;br /&gt;
];&lt;br /&gt;
var lineGenerator = d3.line(&lt;br /&gt;
  .x(function(d) { return x(d.x); })&lt;br /&gt;
  .y(function(d) { return y(d.y); });&lt;br /&gt;
var linePath = lineGenerator(lineData);&lt;br /&gt;
  console.log(&amp;quot;lineGenerator &amp;quot;,linePath); // svg path string für die Linie&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LInie mit radialen Angaben (Radius und Winkel)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var lineData = [&lt;br /&gt;
	[0, 80],&lt;br /&gt;
	[Math.PI * 0.25, 80],&lt;br /&gt;
	[Math.PI * 0.5, 30],&lt;br /&gt;
	[Math.PI * 0.75, 80],&lt;br /&gt;
	[Math.PI, 80],&lt;br /&gt;
	[Math.PI * 1.25, 80],&lt;br /&gt;
	[Math.PI * 1.5, 80],&lt;br /&gt;
	[Math.PI * 1.75, 80],&lt;br /&gt;
	[Math.PI * 2, 80]&lt;br /&gt;
];&lt;br /&gt;
  var lineGenerator = d3.radialLine();&lt;br /&gt;
&lt;br /&gt;
  var linePath = lineGenerator(lineData);&lt;br /&gt;
  console.log(&amp;quot;lineGenerator &amp;quot;,linePath);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel für Mittelspeiche bei Bogensegmenten (Gradangaben im Bogrenmaß)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// function to calculate middle Spike for textpositioning (spike direction)&lt;br /&gt;
const middleSpikeLine = d =&amp;gt; {&lt;br /&gt;
  const pi = Math.PI;&lt;br /&gt;
  const halfPi = pi/2;&lt;br /&gt;
  const angles = [x(d.x0), x(d.x1)]; // remember x is circular scale...&lt;br /&gt;
  const r = Math.max(0, (y(d.y0) + y(d.y1))); // ...y is radial scale&lt;br /&gt;
  const middleAngle = (angles[1] + angles[0]) / 2; // this is rad not grad&lt;br /&gt;
  innerRadius = Math.max(0, y(d.y0));&lt;br /&gt;
  outerRadius = Math.max(0, y(d.y1));&lt;br /&gt;
&lt;br /&gt;
  var lineData = [&lt;br /&gt;
	[middleAngle, innerRadius],&lt;br /&gt;
	[middleAngle, outerRadius]&lt;br /&gt;
];&lt;br /&gt;
  var lineGenerator = d3.radialLine();&lt;br /&gt;
  var linePath = lineGenerator(lineData);&lt;br /&gt;
  return linePath;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Data_Handling_Basics&amp;diff=24052</id>
		<title>D3.js - Data Handling Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Data_Handling_Basics&amp;diff=24052"/>
		<updated>2019-09-03T09:26:37Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: /* Data Patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Data Joins ==&lt;br /&gt;
 https://www.d3indepth.com/datajoins/&lt;br /&gt;
D3.js kann Daten mit Knoten im Dom verbinden (join). Durch diese enge Verbindung von grafischen HTML Elementen und den Daten wird die Darstellung sehr effizient.&lt;br /&gt;
&lt;br /&gt;
Hat man 3 Daten, kann man diese z.B. mit 3 Divs verarbeiten. &lt;br /&gt;
&lt;br /&gt;
Dazu gibt es die Funktionen Enter und Exit, die fehlende oder überschüssige Knoten hinzufügen / entfernen.&lt;br /&gt;
&lt;br /&gt;
== Datenformate ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enter / Exit Funktion ==&lt;br /&gt;
 https://www.d3indepth.com/enterexit/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data Patterns ==&lt;br /&gt;
Beispiele für Data Handling&lt;br /&gt;
=== Beispiel - Verständnis für Generatoren ===&lt;br /&gt;
Die Generatoren für Basis Shapes funktionieren alle auf ähnlich. Hier einfache Beispiele.&lt;br /&gt;
&lt;br /&gt;
Linie (einzelnes Segment)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var lineData = [&lt;br /&gt;
  {&amp;#039;x&amp;#039;: -5, &amp;#039;y&amp;#039;: 5},&lt;br /&gt;
  {&amp;#039;x&amp;#039;: 5, &amp;#039;y&amp;#039;: -5},&lt;br /&gt;
];&lt;br /&gt;
var lineGenerator = d3.line(&lt;br /&gt;
  .x(function(d) { return x(d.x); })&lt;br /&gt;
  .y(function(d) { return y(d.y); });&lt;br /&gt;
var linePath = lineGenerator(lineData);&lt;br /&gt;
  console.log(&amp;quot;lineGenerator &amp;quot;,linePath); // svg path string für die Linie&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LInie mit radialen Angaben (Radius und Winkel)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var lineData = [&lt;br /&gt;
	[0, 80],&lt;br /&gt;
	[Math.PI * 0.25, 80],&lt;br /&gt;
	[Math.PI * 0.5, 30],&lt;br /&gt;
	[Math.PI * 0.75, 80],&lt;br /&gt;
	[Math.PI, 80],&lt;br /&gt;
	[Math.PI * 1.25, 80],&lt;br /&gt;
	[Math.PI * 1.5, 80],&lt;br /&gt;
	[Math.PI * 1.75, 80],&lt;br /&gt;
	[Math.PI * 2, 80]&lt;br /&gt;
];&lt;br /&gt;
  var lineGenerator = d3.radialLine();&lt;br /&gt;
&lt;br /&gt;
  var linePath = lineGenerator(lineData);&lt;br /&gt;
  console.log(&amp;quot;lineGenerator &amp;quot;,linePath);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Data_Handling_Basics&amp;diff=24051</id>
		<title>D3.js - Data Handling Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Data_Handling_Basics&amp;diff=24051"/>
		<updated>2019-09-03T09:26:11Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: /* Data Patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Data Joins ==&lt;br /&gt;
 https://www.d3indepth.com/datajoins/&lt;br /&gt;
D3.js kann Daten mit Knoten im Dom verbinden (join). Durch diese enge Verbindung von grafischen HTML Elementen und den Daten wird die Darstellung sehr effizient.&lt;br /&gt;
&lt;br /&gt;
Hat man 3 Daten, kann man diese z.B. mit 3 Divs verarbeiten. &lt;br /&gt;
&lt;br /&gt;
Dazu gibt es die Funktionen Enter und Exit, die fehlende oder überschüssige Knoten hinzufügen / entfernen.&lt;br /&gt;
&lt;br /&gt;
== Datenformate ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enter / Exit Funktion ==&lt;br /&gt;
 https://www.d3indepth.com/enterexit/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data Patterns ==&lt;br /&gt;
Beispiele für Data Handling&lt;br /&gt;
=== Beispiel - Verständnis für Generatoren ===&lt;br /&gt;
Die Generatoren für Basis Shapes funktionieren alle auf ähnlich. Hier einfache Beispiele.&lt;br /&gt;
&lt;br /&gt;
Linie (einzelnes Segment)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var lineData = [&lt;br /&gt;
  {&amp;#039;x&amp;#039;: -5, &amp;#039;y&amp;#039;: 5},&lt;br /&gt;
  {&amp;#039;x&amp;#039;: 5, &amp;#039;y&amp;#039;: -5},&lt;br /&gt;
];&lt;br /&gt;
var lineGenerator = d3.line(&lt;br /&gt;
  .x(function(d) { return x(d.x); })&lt;br /&gt;
  .y(function(d) { return y(d.y); });&lt;br /&gt;
var linePath = lineGenerator(lineData);&lt;br /&gt;
  console.log(&amp;quot;lineGenerator &amp;quot;,linePath); // svg path string für die Linie&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LInie mit radialen Angaben (Radius und Winkel)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var lineData = [&lt;br /&gt;
	[0, 80],&lt;br /&gt;
	[Math.PI * 0.25, 80],&lt;br /&gt;
	[Math.PI * 0.5, 30],&lt;br /&gt;
	[Math.PI * 0.75, 80],&lt;br /&gt;
	[Math.PI, 80],&lt;br /&gt;
	[Math.PI * 1.25, 80],&lt;br /&gt;
	[Math.PI * 1.5, 80],&lt;br /&gt;
	[Math.PI * 1.75, 80],&lt;br /&gt;
	[Math.PI * 2, 80]&lt;br /&gt;
];&lt;br /&gt;
  var lineGenerator = d3.radialLine();&lt;br /&gt;
&lt;br /&gt;
  var linePath = lineGenerator(lineData);&lt;br /&gt;
  console.log(&amp;quot;lineGenerator &amp;quot;,linePath);&lt;br /&gt;
&lt;br /&gt;
  return linePath;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Data_Handling_Basics&amp;diff=24050</id>
		<title>D3.js - Data Handling Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Data_Handling_Basics&amp;diff=24050"/>
		<updated>2019-09-03T09:12:28Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Data Joins ==&lt;br /&gt;
 https://www.d3indepth.com/datajoins/&lt;br /&gt;
D3.js kann Daten mit Knoten im Dom verbinden (join). Durch diese enge Verbindung von grafischen HTML Elementen und den Daten wird die Darstellung sehr effizient.&lt;br /&gt;
&lt;br /&gt;
Hat man 3 Daten, kann man diese z.B. mit 3 Divs verarbeiten. &lt;br /&gt;
&lt;br /&gt;
Dazu gibt es die Funktionen Enter und Exit, die fehlende oder überschüssige Knoten hinzufügen / entfernen.&lt;br /&gt;
&lt;br /&gt;
== Datenformate ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enter / Exit Funktion ==&lt;br /&gt;
 https://www.d3indepth.com/enterexit/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data Patterns ==&lt;br /&gt;
Beispiele für Data Handling&lt;br /&gt;
=== Beispiel - Verständnis für Generatoren ===&lt;br /&gt;
Die Generatoren für Basis Shapes funktionieren alle auf ähnlich. Hier ein einfaches Beispiel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var lineData = [&lt;br /&gt;
  {&amp;#039;x&amp;#039;: -5, &amp;#039;y&amp;#039;: 5},&lt;br /&gt;
  {&amp;#039;x&amp;#039;: 5, &amp;#039;y&amp;#039;: -5},&lt;br /&gt;
];&lt;br /&gt;
var lineGenerator = d3.line(&lt;br /&gt;
  .x(function(d) { return x(d.x); })&lt;br /&gt;
  .y(function(d) { return y(d.y); });&lt;br /&gt;
var linePath = lineGenerator(lineData);&lt;br /&gt;
  console.log(&amp;quot;lineGenerator &amp;quot;,linePath); // svg path string für die Linie&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js&amp;diff=24049</id>
		<title>D3.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js&amp;diff=24049"/>
		<updated>2019-09-03T06:37:51Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Datenvisualisierung interaktiv, Karten, Charts etc. &lt;br /&gt;
== Links ==&lt;br /&gt;
 https://d3-wiki.readthedocs.io&lt;br /&gt;
 https://leanpub.com/D3-Tips-and-Tricks/read&lt;br /&gt;
 http://techslides.com/over-1000-d3-js-examples-and-demos&lt;br /&gt;
 https://christopheviau.com/d3list/gallery.html &lt;br /&gt;
 https://github.com/d3/d3/blob/master/API.md#paths-d3-path  API&lt;br /&gt;
 https://www.dashingd3js.com/svg-paths-and-d3js Gute Einführungen mit SVG Grundlagen allerdings z.T. veraltet&lt;br /&gt;
 https://www.dashingd3js.com/&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
 [[D3.js - Tipps und Tricks]]&lt;br /&gt;
=== Daten ===&lt;br /&gt;
 [[D3.js - Data Handling Basics]]&lt;br /&gt;
&lt;br /&gt;
=== Pie Charts &amp;amp; Doughnuts ===&lt;br /&gt;
 https://bl.ocks.org/markarios/6b8b91e0c4ce77b4942659aace8d2d6c&lt;br /&gt;
&lt;br /&gt;
== Hierarchische Daten ==&lt;br /&gt;
Hierarchische Daten sind Daten die sich als Baumstruktur darstellen lassen. Für die Darstellung bieten sich Sunburst, Icicle, Treemaps, Tidy Tree, Radial Tidy Tree, Force Directed Tree... an&lt;br /&gt;
 https://d3-wiki.readthedocs.io/zh_CN/master/Partition-Layout/&lt;br /&gt;
 https://observablehq.com/collection/@d3/d3-hierarchy&lt;br /&gt;
&lt;br /&gt;
=== Sunburst ===&lt;br /&gt;
 https://bl.ocks.org/denjn5/e1cdbbe586ac31747b4a304f8f86efa5 - Sunburst Tutorial&lt;br /&gt;
 https://codepen.io/kholja/pen/xxKgZVb Sunburst mit Tooltips (JSON Data)&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 - zoomable sunburst v4&lt;br /&gt;
 http://bl.ocks.org/hdngr/bb548a2b55e8a53f06ec - color zoomable sunburst&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 [[Interaktive Karten mit d3.js]]&lt;br /&gt;
 https://www.tutorialsteacher.com/d3js/&lt;br /&gt;
=== Partition Sunburst ===&lt;br /&gt;
 https://d3-wiki.readthedocs.io/zh_CN/master/Partition-Layout/ - allgemeine Infos / Einstieg&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 - v4&lt;br /&gt;
 https://bl.ocks.org/denjn5/e1cdbbe586ac31747b4a304f8f86efa5 - Davies Sunburst Tutorial v4&lt;br /&gt;
 https://www.thegreatcodeadventure.com/d3-sunburst-diagram-tutorial/&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 Zoomable Sunburst v4&lt;br /&gt;
&lt;br /&gt;
=== classed vs. attr(&amp;quot;class&amp;quot;,&amp;quot;foo&amp;quot;) ===&lt;br /&gt;
 https://benclinkinbeard.com/d3tips/attrclass-vs-classed/&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js&amp;diff=24048</id>
		<title>D3.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js&amp;diff=24048"/>
		<updated>2019-09-03T06:15:34Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Datenvisualisierung interaktiv, Karten, Charts etc. &lt;br /&gt;
== Links ==&lt;br /&gt;
 https://d3-wiki.readthedocs.io&lt;br /&gt;
 https://leanpub.com/D3-Tips-and-Tricks/read&lt;br /&gt;
 http://techslides.com/over-1000-d3-js-examples-and-demos&lt;br /&gt;
 https://christopheviau.com/d3list/gallery.html &lt;br /&gt;
 https://www.dashingd3js.com/svg-paths-and-d3js Gute Einführungen mit SVG Grundlagen&lt;br /&gt;
 https://www.dashingd3js.com/&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
 [[D3.js - Tipps und Tricks]]&lt;br /&gt;
=== Daten ===&lt;br /&gt;
 [[D3.js - Data Handling Basics]]&lt;br /&gt;
&lt;br /&gt;
=== Pie Charts &amp;amp; Doughnuts ===&lt;br /&gt;
 https://bl.ocks.org/markarios/6b8b91e0c4ce77b4942659aace8d2d6c&lt;br /&gt;
&lt;br /&gt;
== Hierarchische Daten ==&lt;br /&gt;
Hierarchische Daten sind Daten die sich als Baumstruktur darstellen lassen. Für die Darstellung bieten sich Sunburst, Icicle, Treemaps, Tidy Tree, Radial Tidy Tree, Force Directed Tree... an&lt;br /&gt;
 https://d3-wiki.readthedocs.io/zh_CN/master/Partition-Layout/&lt;br /&gt;
 https://observablehq.com/collection/@d3/d3-hierarchy&lt;br /&gt;
&lt;br /&gt;
=== Sunburst ===&lt;br /&gt;
 https://bl.ocks.org/denjn5/e1cdbbe586ac31747b4a304f8f86efa5 - Sunburst Tutorial&lt;br /&gt;
 https://codepen.io/kholja/pen/xxKgZVb Sunburst mit Tooltips (JSON Data)&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 - zoomable sunburst v4&lt;br /&gt;
 http://bl.ocks.org/hdngr/bb548a2b55e8a53f06ec - color zoomable sunburst&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 [[Interaktive Karten mit d3.js]]&lt;br /&gt;
 https://www.tutorialsteacher.com/d3js/&lt;br /&gt;
=== Partition Sunburst ===&lt;br /&gt;
 https://d3-wiki.readthedocs.io/zh_CN/master/Partition-Layout/ - allgemeine Infos / Einstieg&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 - v4&lt;br /&gt;
 https://bl.ocks.org/denjn5/e1cdbbe586ac31747b4a304f8f86efa5 - Davies Sunburst Tutorial v4&lt;br /&gt;
 https://www.thegreatcodeadventure.com/d3-sunburst-diagram-tutorial/&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 Zoomable Sunburst v4&lt;br /&gt;
&lt;br /&gt;
=== classed vs. attr(&amp;quot;class&amp;quot;,&amp;quot;foo&amp;quot;) ===&lt;br /&gt;
 https://benclinkinbeard.com/d3tips/attrclass-vs-classed/&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Tipps_und_Tricks&amp;diff=24047</id>
		<title>D3.js - Tipps und Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Tipps_und_Tricks&amp;diff=24047"/>
		<updated>2019-09-02T16:49:16Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aktionen abhängig von den Daten ausführen ==&lt;br /&gt;
&lt;br /&gt;
Will man beim Daten abarbeiten bestimmte Aktionen abhängig von den Daten Ausführen kann man in vielen Fällen eine anonyme Funktion einsetze oder man nutzt eine Filterfunktion:&lt;br /&gt;
&lt;br /&gt;
Anonyme Funktion für ein HTML-Attribut.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
g.selectAll(&amp;#039;g&amp;#039;)&lt;br /&gt;
  .data(root.descendants())&lt;br /&gt;
  .enter().append(&amp;#039;g&amp;#039;)&lt;br /&gt;
  .attr(&amp;quot;class&amp;quot;, &amp;quot;node&amp;quot;)&lt;br /&gt;
  .append(&amp;#039;path&amp;#039;)&lt;br /&gt;
  .attr(&amp;quot;display&amp;quot;, function (d) { return d.depth ? null : &amp;quot;none&amp;quot;; }); // do not show root element&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Filterfunktion&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
newSlice.filter(d =&amp;gt; (d.depth &amp;gt; 2))&lt;br /&gt;
    .on(&amp;#039;click&amp;#039;, d =&amp;gt; {&lt;br /&gt;
      d3.event.stopPropagation();&lt;br /&gt;
      focusOn(d);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Text Label ausrichten ==&lt;br /&gt;
=== In Pie Chart Segmenten ===&lt;br /&gt;
Beispiel 1 - Als Speichen oder waagrecht oder tangential&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  // Populate the &amp;lt;text&amp;gt; elements with our data-driven titles.&lt;br /&gt;
        g.selectAll(&amp;quot;.node&amp;quot;)&lt;br /&gt;
            .append(&amp;quot;text&amp;quot;)&lt;br /&gt;
            .attr(&amp;quot;fill&amp;quot;,&amp;quot;#FFF&amp;quot;)&lt;br /&gt;
            .attr(&amp;quot;transform&amp;quot;, function(d) {&lt;br /&gt;
                return &amp;quot;translate(&amp;quot; + arc.centroid(d) + &amp;quot;)rotate(&amp;quot; + computeTextRotation(d) + &amp;quot;)&amp;quot;; })&lt;br /&gt;
            .attr(&amp;quot;dx&amp;quot;, &amp;quot;-25&amp;quot;)&lt;br /&gt;
            .attr(&amp;quot;dy&amp;quot;, &amp;quot;.5em&amp;quot;)&lt;br /&gt;
            .text(function(d) { return d.parent ? d.data.name : &amp;quot;&amp;quot; });&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
function computeTextRotation(d) {&lt;br /&gt;
      var angle = (d.x0 + d.x1) / Math.PI * 90;&lt;br /&gt;
      // Avoid upside-down labels&lt;br /&gt;
      //return (angle &amp;lt; 120 || angle &amp;gt; 270) ? angle : angle + 180;  // labels as rims&lt;br /&gt;
      return (angle &amp;lt; 180) ? angle - 90 : angle + 90;  // labels as spokes&lt;br /&gt;
      //return 0 // labels always horizontal&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Beispiel 2 - gebogener Text entlang des Kreisbogens&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
const middleArcLine = d =&amp;gt; {&lt;br /&gt;
  const halfPi = Math.PI/2;&lt;br /&gt;
  const angles = [x(d.x0) - halfPi, x(d.x1) - halfPi];&lt;br /&gt;
  const r = Math.max(0, (y(d.y0) + y(d.y1)) / 2);&lt;br /&gt;
  const middleAngle = (angles[1] + angles[0]) / 2;&lt;br /&gt;
  const invertDirection = middleAngle &amp;gt; 0 &amp;amp;&amp;amp; middleAngle &amp;lt; Math.PI; // On lower quadrants write text ccw&lt;br /&gt;
  if (invertDirection) {&lt;br /&gt;
    angles.reverse();&lt;br /&gt;
  }&lt;br /&gt;
  const path = d3.path();&lt;br /&gt;
  path.arc(0, 0, r, angles[0], angles[1], invertDirection);&lt;br /&gt;
  return path.toString();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
newSlice.append(&amp;#039;path&amp;#039;)&lt;br /&gt;
    .attr(&amp;#039;class&amp;#039;, &amp;#039;hidden-arc&amp;#039;)&lt;br /&gt;
    .attr(&amp;#039;id&amp;#039;, (_, i) =&amp;gt; `hiddenArc${i}`)&lt;br /&gt;
    .attr(&amp;#039;d&amp;#039;, middleArcLine);&lt;br /&gt;
&lt;br /&gt;
const text = newSlice.append(&amp;#039;text&amp;#039;)&lt;br /&gt;
    .attr(&amp;#039;display&amp;#039;, d =&amp;gt; textFits(d) ? null : &amp;#039;none&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
text.append(&amp;#039;textPath&amp;#039;)&lt;br /&gt;
    .attr(&amp;#039;startOffset&amp;#039;,&amp;#039;50%&amp;#039;)&lt;br /&gt;
    .attr(&amp;#039;xlink:href&amp;#039;, (_, i) =&amp;gt; `#hiddenArc${i}` )&lt;br /&gt;
    .style(&amp;#039;stroke&amp;#039;, &amp;#039;#fff&amp;#039;)&lt;br /&gt;
    .text(d =&amp;gt; d.data.name);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Tipps_und_Tricks&amp;diff=24046</id>
		<title>D3.js - Tipps und Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js_-_Tipps_und_Tricks&amp;diff=24046"/>
		<updated>2019-09-02T16:26:22Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: Die Seite wurde neu angelegt: „== Aktionen abhängig von den Daten ausführen ==  Will man beim Daten abarbeiten bestimmte Aktionen abhängig von den Daten Ausführen kann man in vielen Fäl…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aktionen abhängig von den Daten ausführen ==&lt;br /&gt;
&lt;br /&gt;
Will man beim Daten abarbeiten bestimmte Aktionen abhängig von den Daten Ausführen kann man in vielen Fällen eine anonyme Funktion einsetze oder man nutzt eine Filterfunktion:&lt;br /&gt;
&lt;br /&gt;
Anonyme Funktion für ein HTML-Attribut.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
g.selectAll(&amp;#039;g&amp;#039;)&lt;br /&gt;
  .data(root.descendants())&lt;br /&gt;
  .enter().append(&amp;#039;g&amp;#039;)&lt;br /&gt;
  .attr(&amp;quot;class&amp;quot;, &amp;quot;node&amp;quot;)&lt;br /&gt;
  .append(&amp;#039;path&amp;#039;)&lt;br /&gt;
  .attr(&amp;quot;display&amp;quot;, function (d) { return d.depth ? null : &amp;quot;none&amp;quot;; }); // do not show root element&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Filterfunktion&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
newSlice.filter(d =&amp;gt; (d.depth &amp;gt; 2))&lt;br /&gt;
    .on(&amp;#039;click&amp;#039;, d =&amp;gt; {&lt;br /&gt;
      d3.event.stopPropagation();&lt;br /&gt;
      focusOn(d);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js&amp;diff=24045</id>
		<title>D3.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js&amp;diff=24045"/>
		<updated>2019-09-02T16:19:29Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Datenvisualisierung interaktiv, Karten, Charts etc. &lt;br /&gt;
== Links ==&lt;br /&gt;
 https://d3-wiki.readthedocs.io&lt;br /&gt;
 https://leanpub.com/D3-Tips-and-Tricks/read&lt;br /&gt;
 http://techslides.com/over-1000-d3-js-examples-and-demos&lt;br /&gt;
 https://christopheviau.com/d3list/gallery.html &lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
 [[D3.js - Tipps und Tricks]]&lt;br /&gt;
=== Daten ===&lt;br /&gt;
 [[D3.js - Data Handling Basics]]&lt;br /&gt;
&lt;br /&gt;
=== Pie Charts &amp;amp; Doughnuts ===&lt;br /&gt;
 https://bl.ocks.org/markarios/6b8b91e0c4ce77b4942659aace8d2d6c&lt;br /&gt;
&lt;br /&gt;
== Hierarchische Daten ==&lt;br /&gt;
Hierarchische Daten sind Daten die sich als Baumstruktur darstellen lassen. Für die Darstellung bieten sich Sunburst, Icicle, Treemaps, Tidy Tree, Radial Tidy Tree, Force Directed Tree... an&lt;br /&gt;
 https://d3-wiki.readthedocs.io/zh_CN/master/Partition-Layout/&lt;br /&gt;
 https://observablehq.com/collection/@d3/d3-hierarchy&lt;br /&gt;
&lt;br /&gt;
=== Sunburst ===&lt;br /&gt;
 https://bl.ocks.org/denjn5/e1cdbbe586ac31747b4a304f8f86efa5 - Sunburst Tutorial&lt;br /&gt;
 https://codepen.io/kholja/pen/xxKgZVb Sunburst mit Tooltips (JSON Data)&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 - zoomable sunburst v4&lt;br /&gt;
 http://bl.ocks.org/hdngr/bb548a2b55e8a53f06ec - color zoomable sunburst&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 [[Interaktive Karten mit d3.js]]&lt;br /&gt;
 https://www.tutorialsteacher.com/d3js/&lt;br /&gt;
=== Partition Sunburst ===&lt;br /&gt;
 https://d3-wiki.readthedocs.io/zh_CN/master/Partition-Layout/ - allgemeine Infos / Einstieg&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 - v4&lt;br /&gt;
 https://bl.ocks.org/denjn5/e1cdbbe586ac31747b4a304f8f86efa5 - Davies Sunburst Tutorial v4&lt;br /&gt;
 https://www.thegreatcodeadventure.com/d3-sunburst-diagram-tutorial/&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 Zoomable Sunburst v4&lt;br /&gt;
&lt;br /&gt;
=== classed vs. attr(&amp;quot;class&amp;quot;,&amp;quot;foo&amp;quot;) ===&lt;br /&gt;
 https://benclinkinbeard.com/d3tips/attrclass-vs-classed/&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Three_JS&amp;diff=24044</id>
		<title>Three JS</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Three_JS&amp;diff=24044"/>
		<updated>2019-09-02T16:18:05Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; https://threejs.org/&lt;br /&gt;
 https://threejsfundamentals.org/&lt;br /&gt;
 https://threejs.org/editor/ (Szenen und Objekte erstellen und expportieren)&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Three_JS&amp;diff=24043</id>
		<title>Three JS</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Three_JS&amp;diff=24043"/>
		<updated>2019-09-02T10:33:37Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: Die Seite wurde neu angelegt: „ https://threejs.org/  https://threejsfundamentals.org/“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; https://threejs.org/&lt;br /&gt;
 https://threejsfundamentals.org/&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=3D_im_Web&amp;diff=24042</id>
		<title>3D im Web</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=3D_im_Web&amp;diff=24042"/>
		<updated>2019-09-02T10:33:13Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: /* Three JS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Formate ==&lt;br /&gt;
=== GLB / glTF ===&lt;br /&gt;
GLB ist die Binary Version von glTF 2.0. Das Format wird z.B. von Facebook für 3D Bilder verwendet. glTF ist quasi Standard Format für Web 3D (Stand 2019).&lt;br /&gt;
&lt;br /&gt;
 [[GLB / glTF]]&lt;br /&gt;
 https://developers.facebook.com/docs/sharing/3d-posts/glb-tutorials/ - Facebook Manual&lt;br /&gt;
&lt;br /&gt;
== Libraries ==&lt;br /&gt;
=== Three JS ===&lt;br /&gt;
 [[Three JS]]&lt;br /&gt;
Aktuell beste Library für anspruchsvolle Aufgaben und interaktives 3D im Web (Stand 2019). Unterstützt unter anderem glTF&lt;br /&gt;
 https://www.youtube.com/watch?v=uzkedMF-l4Q&amp;amp;list=PLbu98QxRH81KkLTN00OXhD8Y-pRVgTCnM Einführung in Three JS&lt;br /&gt;
 https://medium.com/@matthewmain/how-to-import-a-3d-blender-object-into-a-three-js-project-as-a-gltf-file-5a67290f65f2&lt;br /&gt;
&lt;br /&gt;
== Fake 3D / 360 Grad ==&lt;br /&gt;
Oft reicht auch ein 360 Grad Skript das mehrere Bilder in unterschiedlichen Winkeln der Reihe nach oder interaktiv zeigt. &lt;br /&gt;
 https://scaleflex.github.io/js-cloudimage-360-view/&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24037</id>
		<title>Blender Animation Tipps</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24037"/>
		<updated>2019-08-26T16:20:27Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: /* Orbit / Camera Tracking / Camera Rig */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Output Settings Film Einstellungen ==&lt;br /&gt;
 Properties Editor &amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
 Objekt auswählen &amp;gt; i -&amp;gt; insert Keyframe&lt;br /&gt;
 Spacebar -&amp;gt; Play Animation&lt;br /&gt;
&lt;br /&gt;
== Kamera ==&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/camera_view.html&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/walk_fly.html#dview-fly-walk&lt;br /&gt;
=== Kamera Navigation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Move Active Camera to View&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Object Mode &amp;gt; Ctrl-Alt-Numpad0&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Roll&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R - Rotation mode. Default rollt die Kamera (z-Achse) = camera “roll”.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pan / Pitch / Yaw&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R X X - Vertical Pitch: Enter object rotation mode / Wähle globale Achse X / Wähle lokale Achse X. Funktioniert auch mit anderen Achsen&lt;br /&gt;
 R Y Y - Horizontal Pitch (Yaw)&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dolly&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G MMB oder G Z Z&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sideways Tracking&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G (X X / Y Y) -&amp;gt; you can use X twice or Y to get pure-horizontal or pure-vertical sideways tracking.&lt;br /&gt;
&lt;br /&gt;
=== Walk / Fly ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Walk Mode&amp;#039;&amp;#039;&amp;#039; (WASD Steuerung)&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Walk Navigation&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fly Mode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Fly Navigation&lt;br /&gt;
&lt;br /&gt;
===  Orbit / Camera Tracking / Camera Rig ===&lt;br /&gt;
 https://blender.stackexchange.com/questions/3476/how-can-i-animate-the-camera-in-a-perfect-circular-rotation-around-a-fixed-posit&lt;br /&gt;
 https://www.youtube.com/watch?v=K02hlKyoWNI (Camera Rig)&lt;br /&gt;
&lt;br /&gt;
Du kannst die Kamera einem Pfad folgen lassen, so dass sie dabei immer auf ein bestimmtes Objekt zeigt.&lt;br /&gt;
&lt;br /&gt;
 Shift A &amp;gt; Add Bezier Circle -&amp;gt; Dies ist der Pfad für die Kamera. Skaliere passend.&lt;br /&gt;
 Shift A &amp;gt; Add Empty &amp;gt; Cube -&amp;gt; Dies ist das Objekt das die Kamera fixieren soll.&lt;br /&gt;
 Select Camera&lt;br /&gt;
 Alt + G / Alt + R -&amp;gt; setze Location und Rotation der Kamera auf 0&lt;br /&gt;
 Select Camera und Empty (zuerst Camera)&lt;br /&gt;
 Cmd p oder RM &amp;gt; Parent to Object &amp;gt; Häkchen bei keep transform&lt;br /&gt;
 &lt;br /&gt;
Mit Pfad verknüpfen über Constraint&lt;br /&gt;
 Select Empty&lt;br /&gt;
 Properties Contraint &amp;gt; Follow Path&lt;br /&gt;
 Target = BezierCircle, Check Follow Curve, Fixed Position (Offset steuert Position)&lt;br /&gt;
&lt;br /&gt;
Kamera Position über Constraint&lt;br /&gt;
 Select Camera&lt;br /&gt;
 Properties Constraint &amp;gt; Track to&lt;br /&gt;
 Target = Objekt&lt;br /&gt;
 Camera View&lt;br /&gt;
 Objekt &amp;gt; Set Origin &amp;gt; Whatever is best -&amp;gt; Feinjustierung der Kamera&lt;br /&gt;
&lt;br /&gt;
Die Kamera kann separat vom Empty Objekt, z.B. auf der z-Achse animiert werden. So sind coole Kranfahrten möglich.&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 https://www.youtube.com/watch?v=zp6kCe5Kmf4&amp;amp;t=21s Grant Abbitt Animation Tutorial&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24036</id>
		<title>Blender Animation Tipps</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24036"/>
		<updated>2019-08-26T15:32:07Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: /* Orbit / Camera Tracking / Camera Rig */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Output Settings Film Einstellungen ==&lt;br /&gt;
 Properties Editor &amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
 Objekt auswählen &amp;gt; i -&amp;gt; insert Keyframe&lt;br /&gt;
 Spacebar -&amp;gt; Play Animation&lt;br /&gt;
&lt;br /&gt;
== Kamera ==&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/camera_view.html&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/walk_fly.html#dview-fly-walk&lt;br /&gt;
=== Kamera Navigation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Move Active Camera to View&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Object Mode &amp;gt; Ctrl-Alt-Numpad0&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Roll&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R - Rotation mode. Default rollt die Kamera (z-Achse) = camera “roll”.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pan / Pitch / Yaw&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R X X - Vertical Pitch: Enter object rotation mode / Wähle globale Achse X / Wähle lokale Achse X. Funktioniert auch mit anderen Achsen&lt;br /&gt;
 R Y Y - Horizontal Pitch (Yaw)&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dolly&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G MMB oder G Z Z&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sideways Tracking&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G (X X / Y Y) -&amp;gt; you can use X twice or Y to get pure-horizontal or pure-vertical sideways tracking.&lt;br /&gt;
&lt;br /&gt;
=== Walk / Fly ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Walk Mode&amp;#039;&amp;#039;&amp;#039; (WASD Steuerung)&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Walk Navigation&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fly Mode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Fly Navigation&lt;br /&gt;
&lt;br /&gt;
===  Orbit / Camera Tracking / Camera Rig ===&lt;br /&gt;
 https://blender.stackexchange.com/questions/3476/how-can-i-animate-the-camera-in-a-perfect-circular-rotation-around-a-fixed-posit&lt;br /&gt;
 https://www.youtube.com/watch?v=K02hlKyoWNI (Camera Rig)&lt;br /&gt;
&lt;br /&gt;
Du kannst die Kamera einem Pfad folgen lassen, so dass sie dabei immer auf ein bestimmtes Objekt zeigt.&lt;br /&gt;
&lt;br /&gt;
 Shift A &amp;gt; Add Bezier Circle -&amp;gt; Dies ist der Pfad für die Kamera. Skaliere passend.&lt;br /&gt;
 Shift A &amp;gt; Add Empty &amp;gt; Cube -&amp;gt; Dies ist das Objekt das die Kamera fixieren soll.&lt;br /&gt;
 Select Camera&lt;br /&gt;
 Alt + G / Alt + R -&amp;gt; setze Location und Rotation der Kamera auf 0&lt;br /&gt;
 Select Camera und Empty (zuerst Camera)&lt;br /&gt;
 Cmd p oder RM &amp;gt; Parent to Object &amp;gt; Häkchen bei keep transform&lt;br /&gt;
 &lt;br /&gt;
Mit Pfad verknüpfen über Constraint&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 https://www.youtube.com/watch?v=zp6kCe5Kmf4&amp;amp;t=21s Grant Abbitt Animation Tutorial&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24035</id>
		<title>Blender Animation Tipps</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24035"/>
		<updated>2019-08-26T15:28:52Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: /* Orbit / Camera Track */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Output Settings Film Einstellungen ==&lt;br /&gt;
 Properties Editor &amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
 Objekt auswählen &amp;gt; i -&amp;gt; insert Keyframe&lt;br /&gt;
 Spacebar -&amp;gt; Play Animation&lt;br /&gt;
&lt;br /&gt;
== Kamera ==&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/camera_view.html&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/walk_fly.html#dview-fly-walk&lt;br /&gt;
=== Kamera Navigation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Move Active Camera to View&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Object Mode &amp;gt; Ctrl-Alt-Numpad0&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Roll&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R - Rotation mode. Default rollt die Kamera (z-Achse) = camera “roll”.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pan / Pitch / Yaw&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R X X - Vertical Pitch: Enter object rotation mode / Wähle globale Achse X / Wähle lokale Achse X. Funktioniert auch mit anderen Achsen&lt;br /&gt;
 R Y Y - Horizontal Pitch (Yaw)&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dolly&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G MMB oder G Z Z&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sideways Tracking&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G (X X / Y Y) -&amp;gt; you can use X twice or Y to get pure-horizontal or pure-vertical sideways tracking.&lt;br /&gt;
&lt;br /&gt;
=== Walk / Fly ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Walk Mode&amp;#039;&amp;#039;&amp;#039; (WASD Steuerung)&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Walk Navigation&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fly Mode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Fly Navigation&lt;br /&gt;
&lt;br /&gt;
===  Orbit / Camera Tracking / Camera Rig ===&lt;br /&gt;
 https://blender.stackexchange.com/questions/3476/how-can-i-animate-the-camera-in-a-perfect-circular-rotation-around-a-fixed-posit&lt;br /&gt;
 https://www.youtube.com/watch?v=K02hlKyoWNI (Camera Rig)&lt;br /&gt;
&lt;br /&gt;
Du kannst die Kamera einem Pfad folgen lassen, so dass sie dabei immer auf ein bestimmtes Objekt zeigt.&lt;br /&gt;
&lt;br /&gt;
 Shift A &amp;gt; Add Circle -&amp;gt; Dies ist der Pfad für die Kamera. Skaliere passend.&lt;br /&gt;
 Shift A &amp;gt; Add Empty &amp;gt; Cube -&amp;gt; Dies ist das Objekt das die Kamera fixieren soll.&lt;br /&gt;
 Select Camera&lt;br /&gt;
 Alt + G / Alt + R -&amp;gt; setze Location und Rotation der Kamera auf 0&lt;br /&gt;
 Select Camera und Empty (zuerst Camera)&lt;br /&gt;
 Cmd p oder RM &amp;gt; Parent to Object &amp;gt; Häkchen bei keep transform&lt;br /&gt;
 &lt;br /&gt;
Mit Pfad verknüpfen über Constraint&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 https://www.youtube.com/watch?v=zp6kCe5Kmf4&amp;amp;t=21s Grant Abbitt Animation Tutorial&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24034</id>
		<title>Blender Animation Tipps</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24034"/>
		<updated>2019-08-26T15:08:16Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: /* Kamera */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Output Settings Film Einstellungen ==&lt;br /&gt;
 Properties Editor &amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
 Objekt auswählen &amp;gt; i -&amp;gt; insert Keyframe&lt;br /&gt;
 Spacebar -&amp;gt; Play Animation&lt;br /&gt;
&lt;br /&gt;
== Kamera ==&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/camera_view.html&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/walk_fly.html#dview-fly-walk&lt;br /&gt;
=== Kamera Navigation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Move Active Camera to View&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Object Mode &amp;gt; Ctrl-Alt-Numpad0&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Roll&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R - Rotation mode. Default rollt die Kamera (z-Achse) = camera “roll”.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pan / Pitch / Yaw&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R X X - Vertical Pitch: Enter object rotation mode / Wähle globale Achse X / Wähle lokale Achse X. Funktioniert auch mit anderen Achsen&lt;br /&gt;
 R Y Y - Horizontal Pitch (Yaw)&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dolly&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G MMB oder G Z Z&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sideways Tracking&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G (X X / Y Y) -&amp;gt; you can use X twice or Y to get pure-horizontal or pure-vertical sideways tracking.&lt;br /&gt;
&lt;br /&gt;
=== Walk / Fly ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Walk Mode&amp;#039;&amp;#039;&amp;#039; (WASD Steuerung)&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Walk Navigation&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fly Mode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Fly Navigation&lt;br /&gt;
&lt;br /&gt;
===  Orbit / Camera Track ===&lt;br /&gt;
 https://blender.stackexchange.com/questions/3476/how-can-i-animate-the-camera-in-a-perfect-circular-rotation-around-a-fixed-posit&lt;br /&gt;
 https://www.youtube.com/watch?v=K02hlKyoWNI (Camera Rig)&lt;br /&gt;
&lt;br /&gt;
Du kannst die Kamera einem Pfad folgen lassen, so dass sie dabei immer auf ein bestimmtes Objekt zeigt.&lt;br /&gt;
 Shift A &amp;gt; Add Circle&lt;br /&gt;
 Select Camera &amp;gt; Shift Select Circle -&amp;gt; in dieser Reihenfolge&lt;br /&gt;
 cmd p &amp;gt; Set Parent to Object&lt;br /&gt;
Es erscheinte ein gestrichelte Verbindungslinie von Kamera zu Kreis&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 https://www.youtube.com/watch?v=zp6kCe5Kmf4&amp;amp;t=21s Grant Abbitt Animation Tutorial&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24033</id>
		<title>Blender Animation Tipps</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24033"/>
		<updated>2019-08-26T14:49:15Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: /* Walk / Fly */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Output Settings Film Einstellungen ==&lt;br /&gt;
 Properties Editor &amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
 Objekt auswählen &amp;gt; i -&amp;gt; insert Keyframe&lt;br /&gt;
 Spacebar -&amp;gt; Play Animation&lt;br /&gt;
&lt;br /&gt;
== Kamera ==&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/camera_view.html&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/walk_fly.html#dview-fly-walk&lt;br /&gt;
=== Kamera Navigation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Move Active Camera to View&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Object Mode &amp;gt; Ctrl-Alt-Numpad0&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Roll&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R - Rotation mode. Default rollt die Kamera (z-Achse) = camera “roll”.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pan / Pitch / Yaw&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R X X - Vertical Pitch: Enter object rotation mode / Wähle globale Achse X / Wähle lokale Achse X. Funktioniert auch mit anderen Achsen&lt;br /&gt;
 R Y Y - Horizontal Pitch (Yaw)&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dolly&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G MMB oder G Z Z&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sideways Tracking&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G (X X / Y Y) -&amp;gt; you can use X twice or Y to get pure-horizontal or pure-vertical sideways tracking.&lt;br /&gt;
&lt;br /&gt;
=== Walk / Fly ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Walk Mode&amp;#039;&amp;#039;&amp;#039; (WASD Steuerung)&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Walk Navigation&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fly Mode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Fly Navigation&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 https://www.youtube.com/watch?v=zp6kCe5Kmf4&amp;amp;t=21s Grant Abbitt Animation Tutorial&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24032</id>
		<title>Blender Animation Tipps</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24032"/>
		<updated>2019-08-26T14:48:55Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Output Settings Film Einstellungen ==&lt;br /&gt;
 Properties Editor &amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
 Objekt auswählen &amp;gt; i -&amp;gt; insert Keyframe&lt;br /&gt;
 Spacebar -&amp;gt; Play Animation&lt;br /&gt;
&lt;br /&gt;
== Kamera ==&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/camera_view.html&lt;br /&gt;
 https://docs.blender.org/manual/en/latest/editors/3dview/navigate/walk_fly.html#dview-fly-walk&lt;br /&gt;
=== Kamera Navigation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Move Active Camera to View&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Object Mode &amp;gt; Ctrl-Alt-Numpad0&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Roll&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R - Rotation mode. Default rollt die Kamera (z-Achse) = camera “roll”.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pan / Pitch / Yaw&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 R X X - Vertical Pitch: Enter object rotation mode / Wähle globale Achse X / Wähle lokale Achse X. Funktioniert auch mit anderen Achsen&lt;br /&gt;
 R Y Y - Horizontal Pitch (Yaw)&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dolly&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G MMB oder G Z Z&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sideways Tracking&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 G (X X / Y Y) -&amp;gt; you can use X twice or Y to get pure-horizontal or pure-vertical sideways tracking.&lt;br /&gt;
&lt;br /&gt;
=== Walk / Fly ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Walk Mode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Walk Navigation&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fly Mode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Mode:	All modes&lt;br /&gt;
 Hotkey:	Shift-AccentGrave&lt;br /&gt;
 Menu:	View ‣ Navigation ‣ Fly Navigation&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 https://www.youtube.com/watch?v=zp6kCe5Kmf4&amp;amp;t=21s Grant Abbitt Animation Tutorial&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Blender_Texturing_Tipps&amp;diff=24031</id>
		<title>Blender Texturing Tipps</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Blender_Texturing_Tipps&amp;diff=24031"/>
		<updated>2019-08-26T12:30:32Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Siehe auch&lt;br /&gt;
 [[Blender Material Tipps]]&lt;br /&gt;
 https://blender.stackexchange.com/questions/56610/how-to-tile-textures-in-cycles - Tile Sizing&lt;br /&gt;
&lt;br /&gt;
Gute Texturen für 3D bieten außer dem Texturbild Normalmaps, Gloss etc.&lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
Ein Material mit Textur basiert zunächst auf einem normalen Material. Im Beispiel starten wir mit einer sehr üblichen Kombi aus Diffuse Shader und Glossy Shader, die mit einem Mix Shader zusammengefasst werden. &lt;br /&gt;
=== Basis Textur ===&lt;br /&gt;
Im Shade Editor hängt man dann an den &amp;#039;&amp;#039;&amp;#039;Color Eingang des Diffuse Shader&amp;#039;&amp;#039;&amp;#039; die Textur:&lt;br /&gt;
 Add &amp;gt; Texture &amp;gt; Image Texture&lt;br /&gt;
&lt;br /&gt;
=== Normalen ===&lt;br /&gt;
Gute Texturen liefern eine &amp;#039;&amp;#039;&amp;#039;Normalen Textur&amp;#039;&amp;#039;&amp;#039;. Die Farbwerte dieser stellt man auf &lt;br /&gt;
 Color Space &amp;gt; Non Color &lt;br /&gt;
und leitet diese dann in einen Konverter&lt;br /&gt;
 Add &amp;gt; Vector &amp;gt; Normal Map&lt;br /&gt;
Den Ausgang dieser hängt man an den Normals Eingang der Diffuse und Glossy Shader&lt;br /&gt;
&lt;br /&gt;
=== Roughness ===&lt;br /&gt;
Die Roughness oder Glossy Textur stellt man ebenfalls auf Non Color und leitet sie in den Roughness Eingang des Glossy Shaders.&lt;br /&gt;
 Roughness Image -&amp;gt; Glossy Textur&lt;br /&gt;
Dazwischen kann man auch noch einen &amp;#039;&amp;#039;&amp;#039;Color Ramp Converter&amp;#039;&amp;#039;&amp;#039; schalten. Mit diesem kann man den Effekt der Textur sehr differenziert steuern.&lt;br /&gt;
&lt;br /&gt;
=== Bump Map / Normal Map===&lt;br /&gt;
In der Regel reicht eines davon. Daumenregel: Texturen wie Holzböden, Metalle, feine Strukturen mit Normal Map. Grobe Unebenheiten, Erde, Matsch mit Displacement Map (Bump Map)&lt;br /&gt;
&lt;br /&gt;
=== Ambient Oclusion ===&lt;br /&gt;
=== Reflections ===&lt;br /&gt;
&lt;br /&gt;
== UV Mapping ==&lt;br /&gt;
Für 3D Objekte macht man i.d.R. ein Unwrapping. D.h. man erzeugt eine 2D Projektion der Oberfläche auf die man dann die 2D Textur aufbringen kann. Die erzeugte 2D Oberfläche sieht man im UV - Editor Mode:&lt;br /&gt;
* Zusätzliches Fenster mit uv Editor öffnen&lt;br /&gt;
 Edit Mode&lt;br /&gt;
 u &amp;gt; Unwrap&lt;br /&gt;
&lt;br /&gt;
== Seams ==&lt;br /&gt;
Bei komplexen Objekten muss man selbst die Kanten festlegen, an denen das Objekt aufgeschnitten wird um es flach zu machen. Stelle dir vor, du möchtest das Objekt mit einer Schere so zerschneiden, dass du es flach machen kannst.&lt;br /&gt;
 ctrl i &amp;gt; Mark Seam, RM &amp;gt; Mark Seam&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24030</id>
		<title>Blender Animation Tipps</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Blender_Animation_Tipps&amp;diff=24030"/>
		<updated>2019-08-25T16:02:44Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Output Settings Film Einstellungen ==&lt;br /&gt;
 Properties Editor &amp;gt; Output&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
 Objekt auswählen &amp;gt; i -&amp;gt; insert Keyframe&lt;br /&gt;
 Spacebar -&amp;gt; Play Animation&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 https://www.youtube.com/watch?v=zp6kCe5Kmf4&amp;amp;t=21s Grant Abbitt Animation Tutorial&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=D3.js&amp;diff=24019</id>
		<title>D3.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=D3.js&amp;diff=24019"/>
		<updated>2019-08-21T18:13:33Z</updated>

		<summary type="html">&lt;p&gt;84.136.110.214: /* Partition Sunburst */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Datenvisualisierung interaktiv, Karten, Charts etc. &lt;br /&gt;
== Links ==&lt;br /&gt;
 https://d3-wiki.readthedocs.io&lt;br /&gt;
 https://leanpub.com/D3-Tips-and-Tricks/read&lt;br /&gt;
 http://techslides.com/over-1000-d3-js-examples-and-demos&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
 [[Interaktive Karten mit d3.js]]&lt;br /&gt;
=== Partition Sunburst ===&lt;br /&gt;
 https://d3-wiki.readthedocs.io/zh_CN/master/Partition-Layout/ - allgemeine Infos / Einstieg&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 - v4&lt;br /&gt;
 https://bl.ocks.org/denjn5/e1cdbbe586ac31747b4a304f8f86efa5 - Davies Sunburst Tutorial v4&lt;br /&gt;
 https://www.thegreatcodeadventure.com/d3-sunburst-diagram-tutorial/&lt;br /&gt;
 https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099 Zoomable Sunburst v4&lt;br /&gt;
&lt;br /&gt;
=== classed vs. attr(&amp;quot;class&amp;quot;,&amp;quot;foo&amp;quot;) ===&lt;br /&gt;
 https://benclinkinbeard.com/d3tips/attrclass-vs-classed/&lt;/div&gt;</summary>
		<author><name>84.136.110.214</name></author>
	</entry>
</feed>