Code not showing anything :(

Hi,
I “wrote” some code to display two 4 sided polygons, but it wont show anything :-/
I’ve copied the makeSquare() function from the Procedural-Cube tutorial and created (I think?) the polygons with it. The script runs, but shows nothing.
Inputs are welcome :slight_smile:

import direct.directbase.DirectStart
from pandac.PandaModules import GeomVertexFormat, GeomVertexData
from pandac.PandaModules import Geom, GeomTriangles, GeomVertexWriter
from pandac.PandaModules import Vec3, Vec4, Point3
from pandac.PandaModules import Texture, GeomNode

#--------------------- Functions
def myNormalize(myVec):
	myVec.normalize()
	return myVec
	
def makeSquare(x1,y1,z1, x2,y2,z2):
	format=GeomVertexFormat.getV3n3cpt2()
	vdata=GeomVertexData('square', format, Geom.UHDynamic)

	vertex=GeomVertexWriter(vdata, 'vertex')
	normal=GeomVertexWriter(vdata, 'normal')
	color=GeomVertexWriter(vdata, 'color')
	texcoord=GeomVertexWriter(vdata, 'texcoord')
	
	#make sure we draw the sqaure in the right plane
	if x1!=x2:
		vertex.addData3f(x1, y1, z1)
		vertex.addData3f(x2, y1, z1)
		vertex.addData3f(x2, y2, z2)
		vertex.addData3f(x1, y2, z2)

		normal.addData3f(myNormalize(Vec3(2*x1-1, 2*y1-1, 2*z1-1)))
		normal.addData3f(myNormalize(Vec3(2*x2-1, 2*y1-1, 2*z1-1)))
		normal.addData3f(myNormalize(Vec3(2*x2-1, 2*y2-1, 2*z2-1)))
		normal.addData3f(myNormalize(Vec3(2*x1-1, 2*y2-1, 2*z2-1)))
		
	else:
		vertex.addData3f(x1, y1, z1)
		vertex.addData3f(x2, y2, z1)
		vertex.addData3f(x2, y2, z2)
		vertex.addData3f(x1, y1, z2)

		normal.addData3f(myNormalize(Vec3(2*x1-1, 2*y1-1, 2*z1-1)))
		normal.addData3f(myNormalize(Vec3(2*x2-1, 2*y2-1, 2*z1-1)))
		normal.addData3f(myNormalize(Vec3(2*x2-1, 2*y2-1, 2*z2-1)))
		normal.addData3f(myNormalize(Vec3(2*x1-1, 2*y1-1, 2*z2-1)))

	#adding different colors to the vertex for visibility
	color.addData4f(1.0,0.0,0.0,1.0)
	color.addData4f(0.0,1.0,0.0,1.0)
	color.addData4f(0.0,0.0,1.0,1.0)
	color.addData4f(1.0,0.0,1.0,1.0)

	texcoord.addData2f(0.0, 1.0)
	texcoord.addData2f(0.0, 0.0)
	texcoord.addData2f(1.0, 0.0)
	texcoord.addData2f(1.0, 1.0)

	#quads arent directly supported by the Geom interface
	#you might be interested in the CardMaker class if you are
	#interested in rectangle though
	tri1=GeomTriangles(Geom.UHDynamic)
	tri2=GeomTriangles(Geom.UHDynamic)

	tri1.addVertex(0)
	tri1.addVertex(1)
	tri1.addVertex(3)

	tri2.addConsecutiveVertices(1,3)

	tri1.closePrimitive()
	tri2.closePrimitive()


	square=Geom(vdata)
	square.addPrimitive(tri1)
	square.addPrimitive(tri2)
	
	return square
	
#---------------------- End of functions
base.camera.setPos(0, -10, 0)

squarea = makeSquare(0,0,0, 1, 1, 1)
squareb = makeSquare(2,2,2, 1, 1, 1)
snode = GeomNode('square')
snode.addGeom(squarea)
snode.addGeom(squareb)

poly = render.attachNewNode(snode)
poly.setTwoSided(True)
poly.setPos(0,0,0)
#poly.reparentTo(render)

run();

*edit to remove incorrect and potentially confusing advice. My apologies!

Sorry Tutunkommon, but that makes no sense at all. Panda3D doesn’t even care a bit how your code is arranged.

MeLight, I just tried it and the code works perfectly fine.
I can see two squares, but only after I zoom out (by dragging the right mouse button).

The problem is that the default trackball is still enabled. You can’t set positions on the camera while it is still enabled. Try this:

base.disableMouse()
base.camera.setPos(0, -10, 0) 

Then, it shows up fine. :slight_smile:

Thanx, works perfectly :smiley: