FOV Target of a Camera

I’m looking at a sample 1.4.1 DAE file I’ve been given, which can be read by the xsi modtool product that wrote it, and passes the coherency test.

There is a camera zoom in this file. I don’t see how the fov animation is connected to the camera — there are no matching IDs anywhere. Are there some implicit attributes for elements that aren’t listed but can be used as channel targets, ie “fov” for a camera? Where’s the list?

Here’s the channel target spec with the animation:

		<channel source="#Camera1_fov-anim-sampler" target="Camera1/fov"></channel>

Here’s the camera

	<camera id="cameras_1" name="cameras_1">
		<optics>
			<technique_common>
				<perspective>
					<xfov>47.271999</xfov>
					<aspect_ratio>1.333333</aspect_ratio>
					<znear>0.100000</znear>
					<zfar>32768.000000</zfar>
				</perspective>
			</technique_common>
		</optics>
	</camera>

Here’s the node

				<node id="Camera1" name="Camera1">
					...
					<instance_camera url="#cameras_1"/>
				</node>

If the target referred to xfov, I could understand that. But instead, “fov”. My own output refers to xfov and seems to be ignored. What part of the spec am I missing? Thanks.

No.

For this to work, there must be an element in the scope of “Camera1” that has an attribute of sid=“fov”. The export appears to be incomplete. E.g. there should be <xfov sid=“fov”> or <yfov sid=“fov”> in the camera.

Nope, there’s no sid with any kind of fov anywhere in the file, yet it can be re-read by the xsi mod tool.

I’ll point out that there does seem to be an undocumented set of specifications in COLLADA:

  • where are translate’s X, Y, and Z’s formally described and listed in the spec?
  • where are rotate’s 4 components formally described? Is only the angle a valid target of a channel animation? What about the components of the axis? What are they called?

So it doesn’t seem to be completely out of the question that there is an FOV target

These are pretty key as they constitute the set of allowable channel targets.

I would consider that a bug in xsi then since it does not abide by the SID addressing syntax as described in the spec (e.g. in chapter 3 of the 1.5 spec).