three#PlaneGeometry JavaScript Examples
The following examples show how to use
three#PlaneGeometry.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: controller.js From architect3d with MIT License | 6 votes |
setGroundPlane()
{
// ground plane used to find intersections
var size = 10000;
// The below line was originally setting the plane visibility to false
// Now its setting visibility to true. This is necessary to be detected
// with the raycaster objects to click walls and floors.
this.plane = new Mesh(new PlaneGeometry(size, size), new MeshBasicMaterial({visible:false}));
this.plane.rotation.x = -Math.PI / 2;
this.plane.visible = true;
this.scene.add(this.plane);
}
Example #2
Source File: Frame.js From three-mesh-ui with MIT License | 6 votes |
constructor( material ) {
const geometry = new PlaneGeometry();
super( geometry, material );
this.castShadow = true;
this.receiveShadow = true;
this.name = 'MeshUI-Frame';
}
Example #3
Source File: skybox.js From architect3d with MIT License | 5 votes |
constructor(scene, renderer)
{
super();
this.defaultEnvironment = 'rooms/textures/envs/Garden.png';
this.useEnvironment = false;
this.topColor = 0x92b2ce;//0xe9e9e9; //0xf9f9f9;//0x565e63
this.bottomColor = 0xffffff;//0xD8ECF9
this.verticalOffset = 400;
this.exponent = 0.5;
var uniforms = {topColor: {type: 'c',value: new Color(this.topColor)},bottomColor: {type: 'c',value: new Color(this.bottomColor)},offset: {type: 'f',value: this.verticalOffset}, exponent: {type:'f', value: this.exponent}};
this.scene = scene;
this.renderer = renderer;
this.sphereRadius = 4000;
this.widthSegments = 32;
this.heightSegments = 15;
this.sky = null;
this.plainVertexShader = ['varying vec3 vWorldPosition;','void main() {','vec4 worldPosition = modelMatrix * vec4( position, 1.0 );','vWorldPosition = worldPosition.xyz;','gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0 );','}'].join('\n');
this.plainFragmentShader = ['uniform vec3 bottomColor;','uniform vec3 topColor;','uniform float offset;','uniform float exponent;','varying vec3 vWorldPosition;','void main() {',' float h = normalize( vWorldPosition + offset ).y;',' gl_FragColor = vec4( mix( bottomColor, topColor, max( pow( max(h, 0.0 ), exponent ), 0.0 ) ), 1.0 );','}'].join('\n');
this.vertexShader = ['varying vec2 vUV;','void main() {',' vUV=uv;',' vec4 pos = vec4(position, 1.0);', ' gl_Position = projectionMatrix * modelViewMatrix * pos;','}'].join('\n');
this.fragmentShader = ['uniform sampler2D texture;', 'varying vec2 vUV;', 'void main() { ', 'vec4 sample = texture2D(texture, vUV);', 'gl_FragColor = vec4(sample.xyz, sample.w);' ,'}'].join('\n');
this.texture = new TextureLoader();
this.plainSkyMat = new ShaderMaterial({vertexShader: this.plainVertexShader,fragmentShader: this.plainFragmentShader,uniforms: uniforms, side: DoubleSide});
this.skyMat = undefined;
this.skyGeo = new SphereGeometry(this.sphereRadius, this.widthSegments, this.heightSegments);
this.sky = new Mesh(this.skyGeo, this.skyMat);
// this.sky.position.x += this.sphereRadius*0.5;
var groundT = new TextureLoader().load('rooms/textures/Ground_4K.jpg', function(){});
groundT.wrapS = groundT.wrapT = RepeatWrapping;
groundT.repeat.set(10,10);
// var uniforms2 = {topColor: {type: 'c',value: new Color(0xFFFFFF)},bottomColor: {type: 'c',value: new Color(0x999999)},offset: {type: 'f',value: this.verticalOffset}, exponent: {type:'f', value: this.exponent}};
this.groundGeo = new PlaneGeometry(10000, 10000, 10);
this.groundMat = new MeshBasicMaterial({color: 0xEAEAEA, side: DoubleSide, map:groundT });
this.ground = new Mesh(this.groundGeo, this.groundMat);
this.ground.rotateX(-Math.PI * 0.5);
this.ground.position.y = -1;
this.groundSceneReflector = new GroundSceneReflector(this.ground, this.renderer, this.scene,{textureOne:'rooms/textures/Ground_4K.jpg', textureTwo:'rooms/textures/GroundRough.jpg', wrapOne:{x:40, y:40}, wrapTwo:{x:50, y:50}, textureWidth: 512, textureHeight: 512, intensity: 0.1, blendIntensity: 0.05});
this.scene.add(this.sky);
this.scene.add(this.ground);
var axesHelper = new AxesHelper( 100 );
this.scene.add( axesHelper );
this.init();
}
Example #4
Source File: item.js From architect3d with MIT License | 4 votes |
/**
* Constructs an item.
*
* @param model
* TODO
* @param metadata
* TODO
* @param geometry
* TODO
* @param material
* TODO
* @param position
* TODO
* @param rotation
* TODO
* @param scale
* TODO
*/
constructor(model, metadata, geometry, material, position, rotation, scale, isgltf=false)
{
super();
this.model = model;
this.metadata = metadata;
/** */
this.errorGlow = new Mesh();
/** */
this.hover = false;
/** */
this.selected = false;
/** */
this.highlighted = false;
/** */
this.error = false;
/** */
this.emissiveColor = 0x444444;
/** Does this object affect other floor items */
this.obstructFloorMoves = true;
/** */
this.position_set = false;
/** Show rotate option in context menu */
this.allowRotate = true;
/** */
this.fixed = false;
/** dragging */
this.dragOffset = new Vector3();
/** */
this.halfSize = new Vector3(0,0,0);
this.bhelper = null;
this.scene = this.model.scene;
this._freePosition = true;
if(!isgltf)
{
this.geometry = geometry;
this.material = material;
// center in its boundingbox
this.geometry.computeBoundingBox();
this.geometry.applyMatrix(new Matrix4().makeTranslation(- 0.5 * (this.geometry.boundingBox.max.x + this.geometry.boundingBox.min.x),- 0.5 * (this.geometry.boundingBox.max.y + this.geometry.boundingBox.min.y),- 0.5 * (this.geometry.boundingBox.max.z + this.geometry.boundingBox.min.z)));
this.geometry.computeBoundingBox();
}
else
{
var objectBox = new Box3();
objectBox.setFromObject(geometry);
var hsize = objectBox.max.clone().sub(objectBox.min).multiplyScalar(0.5);
this.geometry = new BoxGeometry(hsize.x*0.5, hsize.y*0.5, hsize.z*0.5);
this.material = new MeshStandardMaterial({color: 0x000000, wireframe: true, visible:false});
this.geometry.computeBoundingBox();
this.add(geometry);
}
if(!this.material.color)
{
this.material.color = new Color('#FFFFFF');
}
this.wirematerial = new MeshBasicMaterial({color: 0x000000, wireframe: true});
this.errorColor = 0xff0000;
this.resizable = metadata.resizable;
this.castShadow = true;
this.receiveShadow = false;
this.originalmaterial = material;
this.texture = this.material.texture;
this.position_set = false;
if (position)
{
this.position.copy(position);
this.position_set = true;
}
this.halfSize = this.objectHalfSize();
this.canvasWH = document.createElement('canvas');
this.canvasWH.width = this.getWidth()+1.0;
this.canvasWH.height = this.getHeight()+1.0;
this.canvascontextWH = this.canvasWH.getContext('2d');
this.canvasTextureWH = new CanvasTexture(this.canvasWH);
this.canvasMaterialWH = new MeshBasicMaterial({map:this.canvasTextureWH, side: DoubleSide, transparent:true});
this.canvasPlaneWH = new Mesh(new PlaneGeometry(this.getWidth(), this.getHeight(), 1, 1), this.canvasMaterialWH);
this.canvasPlaneWH.scale.set(1, 1, 1);
this.canvasPlaneWH.position.set(0, 0, this.getDepth()*0.5 + 0.3);
this.canvasWD = document.createElement('canvas');
this.canvasWD.width = this.getWidth()+1.0;
this.canvasWD.height = this.getDepth()+1.0;
this.canvascontextWD = this.canvasWD.getContext('2d');
this.canvasTextureWD = new CanvasTexture(this.canvasWD);
this.canvasMaterialWD = new MeshBasicMaterial({map:this.canvasTextureWD, side: DoubleSide, transparent:true});
this.canvasPlaneWD = new Mesh(new PlaneGeometry(this.getWidth(), this.getDepth(), 1, 1), this.canvasMaterialWD);
this.canvasPlaneWD.rotateX(-Math.PI * 0.5);
this.canvasPlaneWD.scale.set(1, 1, 1);
this.canvasPlaneWD.position.set(0, this.getHeight()*0.5 + 0.3, 0);
this.canvasPlaneWH.visible = this.canvasPlaneWD.visible = false;
this.add(this.canvasPlaneWH);
this.add(this.canvasPlaneWD);
this.resizeProportionally = true;
if (rotation)
{
this.rotation.y = rotation;
}
if (scale != null)
{
this.setScale(scale.x, scale.y, scale.z);
}
if(this.metadata.materialColors)
{
if(this.metadata.materialColors.length)
{
if(this.material.length)
{
for (var i=0;i<this.metadata.materialColors.length;i++)
{
this.material[i].color = new Color(this.metadata.materialColors[i]);
}
}
else
{
this.material.color = new Color(this.metadata.materialColors[0]);
}
}
}
}