![]()  | 
	
| 
		 
			 
			#1  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
			
			 
				
				Saving as a WRL
			 
			
			
			Hi, 
		
		
		
		
		
		
		
		
	
	Is there any tool to save the scene created by Vizard script as a WRL file? If there is no such a tool, then could you recommend the solution for the following problem. I know the parameters of the cylinder in Vizard: position of the bottom, position of the top, scale. How to convert them to WRML cylinder node parameters ‘translation’, rotation’ and ‘scale’? Thank you, Andrey  | 
| 
		 
			 
			#2  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
		
		 
			
			WRL files are simple text files, so you can manually generate the file. Here is an example WRL file that creates a cylinder: 
		
		
		
		
		
		
		
		
	
	Code: 
	Transform {
	translation 0 0.25 0
	rotation 0 1 0 0
	scale 1 1 1
	children [
		Shape {
			geometry Cylinder { radius 0.05 height 0.5 }
		}
	]
}
 | 
| 
		 
			 
			#3  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
		
		 
			
			Sure, no problem to generate wrl. The problem is that the translation and rotation in WRML differ from Vizard. As to translation, WRML has opposite Z direction. More difficult situation is for rotation: since I have top (p1) and bottom (p2) cylinder positions in Vizard, to get WRML rotation parameters I tried 
		
		
		
		
		
		
		
		
	
	vizmat.LookToQuat(vizmat.VectorToPoint(p1,p2)) and vizmat.QuatToAxisAngle(vizmat.LookToQuat(vizmat.Ve ctorToPoint(p1,p2))) but both variants produces something mysterious. Could you help?  | 
| 
		 
			 
			#4  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
		
		 
			
			The VRML rotation field is an axis-angle rotation. To convert a Vizard axis-angle rotation to a VRML axix-angle rotation, you will need to negate the x,y components of the axis vector and convert the degrees to radians. Here is a function that will return the VRML rotation of a cone given the bottom and top points of the cone: 
		
		
		
		
		
		
		
		
	
	Code: 
	def getVRMLConeRotation(bottom,top): v = viz.Vector(top) v -= bottom m = viz.Matrix() m.makeVecRotVec([0,1,0],v) r = m.getAxisAngle() return -r[0],-r[1],r[2],viz.radians(r[3])  | 
| 
		 
			 
			#5  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
		
		 
			
			Thank you, now the result is not misterious. But when I add saved WRL back to Vizard I get the cylinder mirrored from X axis in respect to the original one. Is it because of the reverse convertion while adding?
		 
		
		
		
		
		
		
		
		
	
	 | 
| 
		 
			 
			#6  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
		
		 
			
			I tested it out here and it seems to work fine. Can you provide a sample script that recreates your problem?
		 
		
		
		
		
		
		
		
		
	
	 | 
| 
		 
			 
			#7  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
		
		 
			
			Thank you again, I already found the bug, it works normal.
		 
		
		
		
		
		
		
		
		
	
	 | 
![]()  | 
	
	
		
  | 
	
		
  | 
			 
			Similar Threads
		 | 
	||||
| Thread | Thread Starter | Forum | Replies | Last Post | 
| saving the scene | giancamati | Vizard | 1 | 12-21-2006 10:25 AM | 
| saving the position | poolshark | Vizard | 3 | 09-26-2003 02:57 PM |