Note that there are some explanatory texts on larger screens.

plurals
  1. POthree.js: "TypeError: v is undefined" when defining my homemade geometry
    text
    copied!<p>I am trying to build my own three.js geometry. However, when I try to define it, like this:</p> <pre><code>geometry = new THREE.FreeWallGeometry( 3, 5 ); </code></pre> <p>I get the error "TypeError: v is undefined" from the function <code>addSelf</code> at line 714 in three.js.</p> <p>How do I find out what triggers this error?</p> <p>This is the current code for my homemade geometry:</p> <pre><code>define( [ "libs/three.js/build/three", ], function ( three ) { console.log("setting up makeControls. regards, makeControls"); //THREE.FreeWallGeometry = function ( length, height, depth, segmentsWidth, segmentsHeight, segmentsDepth, materials, sides ) { // X = length, Y = height, Z = depth, THREE.FreeWallGeometry = function ( noOfSegments, segmentLength ) { THREE.Geometry.call( this ); var t1, t2, normal = new THREE.Vector3( 0, 0, 1); freePlane; var freePlane = function ( self, parametricPlane_X, parametricPlane_Y, parametricPlane_Z, equidistantSampler_T1, equidistantSampler_T2 ) { for ( t2 = 0; t2 &lt; noOfSegments; t2 ++ ) { for ( t1 = 0; t1 &lt; noOfSegments; t1 ++ ) { console.log("free: t1, t2 ", t1, t2); //var x = t1 * segmentT1_length - length_half; //var y = t2 * segmentT2_length - height_half; var x = parametricPlane_X ( t1, t2 ); var y = parametricPlane_Y ( t1, t2 ); var z = parametricPlane_Z ( t1, t2 ); console.log("free: x, y z ", x, y, z); self.vertices.push( new THREE.Vector3( x, - y, z ) ); } } for ( t2 = 0; t2 &lt; noOfSegments; t2 ++ ) { for ( t1 = 0; t1 &lt; noOfSegments; t1 ++ ) { var a = t1 + noOfSegments * t2; var b = t1 + noOfSegments * ( t2 + 1 ); var c = ( t1 + 1 ) + noOfSegments * ( t2 + 1 ); var d = ( t1 + 1 ) + noOfSegments * t2; //console.log ("free: a, b, c, d ", a, b, c, d); var face = new THREE.Face4( a, b, c, d ); if (!self.vertices[face.a]) { console.log("this face.a can't index vertices: ", face.a); } if (!self.vertices[face.b]) { console.log("this face.b can't index vertices: ", face.b); } if (!self.vertices[face.c]) { console.log("this face.c can't index vertices: ", face.c); } if (!self.vertices[face.d]) { console.log("this face.d can't index vertices: ", face.d); } face.normal.copy( normal ); face.vertexNormals.push( normal.clone(), normal.clone(), normal.clone(), normal.clone() ); self.faces.push( face ); self.faceVertexUvs[ 0 ].push( [ new THREE.UV( t1 / noOfSegments, 1 - t2 / noOfSegments ), new THREE.UV( t1 / noOfSegments, 1 - ( t2 + 1 ) / noOfSegments ), new THREE.UV( ( t1 + 1 ) / noOfSegments, 1 - ( t2 + 1 ) / noOfSegments ), new THREE.UV( ( t1 + 1 ) / noOfSegments, 1 - t2 / noOfSegments ) ] ); } } } var parametricPlane_X = function ( t1, t2 ) { x = t1; return x; }; var parametricPlane_Y = function ( t1, t2 ) { y = t1; return y; }; var parametricPlane_Z = function ( t1, t2 ) { z = t1 * t2; return z; }; var equidistantSampler_T1 = function ( t1 ) { t1 = Math.sqrt(t1); return t1; }; var equidistantSampler_T2 = function ( t2 ) { t2 = t2; return t2; }; freePlane(this, parametricPlane_X, parametricPlane_Y, parametricPlane_Z, equidistantSampler_T1, equidistantSampler_T2); this.computeCentroids(); }; THREE.FreeWallGeometry.prototype = Object.create( THREE.Geometry.prototype ); } ); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload