three#BoxGeometry JavaScript Examples
The following examples show how to use
three#BoxGeometry.
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: PopupMarker.js From BlueMapVue with MIT License | 6 votes |
constructor(id, appState, events) {
super(id);
this.data.type = "popup";
this.data.label = "Last Map Interaction";
this.appState = appState;
this.events = events;
this.visible = false;
this.elementObject = new CSS2DObject(htmlToElement(`<div id="bm-marker-${this.data.id}" class="bm-marker-${this.data.type}">Test</div>`));
this.elementObject.position.set(0.5, 1, 0.5);
this.addEventListener( 'removed', () => {
if (this.element.parentNode) this.element.parentNode.removeChild(this.element);
});
let cubeGeo = new BoxGeometry(1.01, 1.01, 1.01).translate(0.5, 0.5, 0.5);
let cubeMaterial = new MeshBasicMaterial( {color: 0xffffff, opacity: 0.5, transparent: true} );
this.cube = new Mesh(cubeGeo, cubeMaterial);
this.cube.onClick = evt => this.onClick(evt);
this.add(this.elementObject);
this.add(this.cube);
this.animation = null;
this.events.addEventListener('bluemapMapInteraction', this.onMapInteraction);
window.addEventListener("mousedown", this.removeHandler);
window.addEventListener("touchstart", this.removeHandler);
window.addEventListener("keydown", this.removeHandler);
window.addEventListener("mousewheel", this.removeHandler);
}
Example #2
Source File: CubeTexturePass.js From Computer-Graphics with MIT License | 6 votes |
constructor( camera, envMap, opacity = 1 ) {
super();
this.camera = camera;
this.needsSwap = false;
this.cubeShader = ShaderLib[ 'cube' ];
this.cubeMesh = new Mesh(
new BoxGeometry( 10, 10, 10 ),
new ShaderMaterial( {
uniforms: UniformsUtils.clone( this.cubeShader.uniforms ),
vertexShader: this.cubeShader.vertexShader,
fragmentShader: this.cubeShader.fragmentShader,
depthTest: false,
depthWrite: false,
side: BackSide
} )
);
Object.defineProperty( this.cubeMesh.material, 'envMap', {
get: function () {
return this.uniforms.envMap.value;
}
} );
this.envMap = envMap;
this.opacity = opacity;
this.cubeScene = new Scene();
this.cubeCamera = new PerspectiveCamera();
this.cubeScene.add( this.cubeMesh );
}
Example #3
Source File: VoxelLoader.js From three-voxel-loader with MIT License | 5 votes |
/**
* Generates a polygon mesh with cubes based on voxel data.
* One cube for each voxel.
* @param {PointOctree} octree Octree with voxel data stored as points in space.
* @returns {Mesh} 3D mesh based on voxel data
*/
generateMesh(octree) {
let mergedGeometry = new Geometry();
const material = this.material;
for (const leaf of octree.leaves()) {
if (leaf.points !== null) {
const pos = new Vector3();
var i;
let min = { x: leaf.points[0].x, y: leaf.points[0].y, z: leaf.points[0].z };
let max = { x: leaf.points[0].x, y: leaf.points[0].y, z: leaf.points[0].z };
for (i = 0; i < leaf.points.length; i++) {
const point = leaf.points[i];
pos.add(point);
min.x = Math.min(min.x, point.x);
min.y = Math.min(min.y, point.y);
min.z = Math.min(min.z, point.z);
max.x = Math.max(max.x, point.x);
max.y = Math.max(max.y, point.y);
max.z = Math.max(max.z, point.z);
}
let width = Math.round((this.voxelSize + (max.x - min.x)) * 100) / 100;;
let height = Math.round((this.voxelSize + (max.y - min.y)) * 100) / 100;;
let depth = Math.round((this.voxelSize + (max.z - min.z)) * 100) / 100;
let voxelGeometry = new BoxGeometry(width, height, depth);
pos.divideScalar(i);
const rgb = leaf.data[0].color;
if (rgb != null) {
const color = new Color().setRGB(rgb.r / 255, rgb.g / 255, rgb.b / 255);
for (var i = 0; i < voxelGeometry.faces.length; i++) {
let face = voxelGeometry.faces[i];
face.color.set(color);
}
}
voxelGeometry.translate(pos.x, pos.y, pos.z);
mergedGeometry.merge(voxelGeometry);
voxelGeometry.translate(-pos.x, -pos.y, -pos.z);
}
}
let bufGeometry = new BufferGeometry().fromGeometry(mergedGeometry);
bufGeometry.computeFaceNormals();
bufGeometry.computeVertexNormals();
var voxels = new Mesh(bufGeometry, material);
return voxels;
}
Example #4
Source File: Entities.js From webmc with MIT License | 5 votes |
constructor (game) {
this.game = game
this.mobMaterial = new MeshStandardMaterial({
color: new Color('red')
})
this.mobGeometry = new BoxGeometry(1, 1, 1)
this.mobMaxCount = 1000
this.mobMesh = new InstancedMesh(
this.mobGeometry,
this.mobMaterial,
this.mobMaxCount
)
this.mobMesh.instanceMatrix.setUsage(DynamicDrawUsage)
this.game.scene.add(this.mobMesh)
this.playerMaterial = new MeshStandardMaterial({
color: new Color('blue')
})
this.playerGeometry = new BoxGeometry(1, 1, 1)
this.playerMaxCount = 1000
this.playerMesh = new InstancedMesh(
this.playerGeometry,
this.playerMaterial,
this.playerMaxCount
)
this.playerMesh.instanceMatrix.setUsage(DynamicDrawUsage)
this.game.scene.add(this.playerMesh)
this.objectMaterial = new MeshStandardMaterial({
color: new Color('green')
})
this.objectGeometry = new BoxGeometry(0.25, 0.25, 0.25)
this.objectMaxCount = 1000
this.objectMesh = new InstancedMesh(
this.objectGeometry,
this.objectMaterial,
this.objectMaxCount
)
this.objectMesh.instanceMatrix.setUsage(DynamicDrawUsage)
this.game.scene.add(this.objectMesh)
this.dummy = new Object3D()
}
Example #5
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]);
}
}
}
}