I created a square using - PlaneBufferGeometry.
How can you find out the coordinates of the points of this square? For example, I want to get the coordinate of a point at the bottom left.
You can find these points in BufferGeometry.attributes (in
mesh.geometry.attributes.position.array to be precise.)
Points in a plane geometry (with segmentation of 1 on width and height) are set in that order:
--- | / | ---
So, if you need coordiantes of point , then do something like that:
let g = new THREE.PlaneBufferGeometry(2, 2); // segmentation 1 x 1 let m = _some_material_ ; let o = new THREE.Mesh(g, m); let v = new THREE.Vector3(); let pos = geometry.attributes.position; v.fromBufferAttribute(pos, 2); // now v contains coordinates of point  // and if you want that v in world coordinates o.localToWorld(v); // now v contains coordinates in world space
1 Local space or world space?
2 How was the geometry was constructed?
I’m assuming local and 3JS geometry.
PlaneGeometry( W = 1, H = 1, W_Seg = 1, H_Seg = 1 );
abs [ x, y ] = [ W/2, H/2 ];
[ -1, +1 ] [ +1, +1 ]
[ -1, -1 ] [ +1, -1 ]
For PlaneGeometry(4,3,2,1) the xy for lower left corner is (-2, -1.5).
Correction was made thanks to mjurczyk.
abs [ x, y ] = [ W*W_Seg/2, H*H_Seg/2 ]; [...] lower left corner is (-4, -1.5).
Are you sure about these calculations ? I may be wrong, but don’t segments adjust to the dimensions (ex. plane (4, 3, n, m) would have corners in (±2, ±1.5), not (±4, ±1.5)) ?
The fun comes, when applied
.scale(), or all of them in different order to the geometry
You are absolutely correct. I was thinking of my own PlaneG Generator not 3JS.