<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[GMan's Mods & Stuff — Cockpit camera]]></title>
	<link rel="self" href="https://gprogs.com/extern.php?action=feed&amp;tid=370&amp;type=atom" />
	<updated>2009-04-03T19:50:48Z</updated>
	<generator>PunBB</generator>
	<id>https://gprogs.com/viewtopic.php?id=370</id>
		<entry>
			<title type="html"><![CDATA[Cockpit camera]]></title>
			<link rel="alternate" href="https://gprogs.com/viewtopic.php?pid=1415#p1415" />
			<content type="html"><![CDATA[<p>here is the code in C++</p><div class="codebox"><pre><code>//--- set camera to behave as cockpit camera of ship ---
void makeCockpit(irr::scene::ICameraSceneNode *camera, //camera
                irr::scene::ISceneNode *node, //scene node (ship)
                irr::core::vector3df offset) //relative position of camera to node (ship)
{
    //get rotation matrix of node - Zeuss must be getRotation not getRelativeTransformation
   irr::core::matrix4 m;
   m.setRotationDegrees(m_node-&gt;getRotation());
   
    // transform forward vector of camera
    irr::core::vector3df frv = irr::core::vector3df (0.0f, 0.0f, 1.0f);
    m.transformVect(frv);
   
    // transform upvector of camera
    irr::core::vector3df upv = irr::core::vector3df (0.0f, 1.0f, 0.0f);
    m.transformVect(upv);

    // transform camera offset (thanks to Zeuss for finding it was missing)
    m.transformVect(offset);
   
    // set camera
    camera-&gt;setPosition(node-&gt;getPosition() + offset); //position camera in front of the ship
    camera-&gt;setUpVector(upv); //set up vector of camera &gt;&gt; Zeuss - tested with +node-&gt;getPostion() and it didnt work, but this works fine.
    camera-&gt;setTarget(node-&gt;getPosition() + frv); //set target of camera (look at point) &gt;&gt; Zeuss - Dont forget to add the node positiob
}</code></pre></div><p>I tried to convert it to blitzmax :</p><div class="codebox"><pre><code>Function makeCockpit(camera:Icamerascenenode,node:ISceneNode,offset:vector3df)

    Local m:matrix4=matrix4.create()
    m.setRotationDegrees(node.GetRotation())

   Local frv:vector3df  = _vector3df (0.0, 0.0, 1.0)
    m.transformVect(frv)

    Local upv:vector3df = _vector3df (0.0, 1.0, 0.0)
    m.transformVect(upv)
    m.transformVect(offset)
   
    
    &#039;offset:+node.getPosition()
    camera.setPosition(offset)
   
    camera.setUpVector(upv)
   
    offset = offset.plus(frv)
    camera.setTarget(offset)
   
    camera.updateAbsolutePosition()
EndFunction</code></pre></div><p>but the camera doesnt turn with the spaceship</p><br /><p>EDIT its matrix4.create instead of new matrix!</p><p>IT WORKS FINALLY!</p><p>thanks for the irrlicht mod</p>]]></content>
			<author>
				<name><![CDATA[Slenkar]]></name>
				<uri>https://gprogs.com/profile.php?id=40</uri>
			</author>
			<updated>2009-04-03T19:50:48Z</updated>
			<id>https://gprogs.com/viewtopic.php?pid=1415#p1415</id>
		</entry>
</feed>
