Making changes to the vertices of one Three.js CylinderGeometry object will impact the vertices of another, creating a

My game features hexagonal tiles with a fog of war overlay on top. To create these tiles, I utilize CylinderGeometry. The process involves creating a new CylinderGeometry above the hex tile to act as the fog of war. In an attempt to make the fog tile look less uniform, I decided to randomize its vertices slightly. However, this led to an unexpected issue where the original tile also became randomized. I'm puzzled by how this happened, as I even tried creating the fog tile first but still encountered the same problem.

Below is the code snippet:

class Tile extends THREE.Object3D 
{
    constructor ( radius, gridX, gridY, fogMaterial ) 
    {
        super();

        // Code for creating tiles and fog of war
        
        return this;
    }
}

Could someone explain why this unexpected behavior is occurring? Is it possible that THREE.js is caching certain elements in the background?

Here is the JSFiddle

Edit: Upon further examination, I compared the vertex positions of the tile before and after the fog generation, and they appeared identical. I've heard that Geometry might be converted to BufferGeometry at some point—could this conversion be causing the issue?

Answer â„–1

There seems to be a key issue in your code that needs addressing:

The problem arises with this particular line of code: let box = new THREE.Box3().setFromObject(hex);

When the vertices are displaced, it results in a larger AABB. As you rely on the AABB for tile positioning, the entire object appears to shift incorrectly.

Version R112 of three.js

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

What is the most effective method for transferring data to a concealed input field?

I currently have a webpage with dual forms - one on the main page and another within a Bootstrap modal. The primary form includes fields like "Neck, Chest, Waist," while the modal's form only has an email field. To streamline the submission process, ...

A guide to efficiently fetch JSON data synchronously using AngularJS

Trying to fetch data from a JSON file using AngularJS results in an error due to the asynchronous nature of the call. The code moves on to the next step before receiving the data, causing issues. The $http.get method was used. $http.get('job.json&apo ...

The C# method is receiving a null array through Ajax

When I retrieve an array in a loop and pass it through an ajax call to my C# method, I'm encountering a problem where only null values are being received in my parameter. The count of the array is coming through, but the actual data seems to be lost. ...

Guide to implementing a real-time countdown timer for days, hours, minutes, and seconds leading up to a specific date and time with JavaScript

Implement a dynamic countdown timer in JavaScript that counts up to a specific date. See the example image for reference: here ...

Initiate a second click action when the button is clicked for the first time

Upon clicking the "Continue" button in my HTML, an overlay is displayed. This overlay contains a "Skip and Continue" button. My goal is to have the second overlay appear directly on the first click of the "Continue" button, without the initial overlay show ...

State not visible in Redux Devtool extension on Chrome browser

I am still getting acquainted with Redux, especially the Redux DevTools. Recently, I developed a simple application where users can be clicked on to display their information. Essentially, the state contains the currently selected user. However, for som ...

Create a dynamic process that automatically generates a variety of div elements by using attributes from JSON data

Is there a way to organize the fixtures from this data into separate divs based on the matchday attribute? I've tried using Underscore's groupBy function but I'm unsure how to dynamically distribute the data into individual divs for each re ...

Executing a JavaScript function across multiple elements: A step-by-step guide

I recently came across this code snippet on w3schools.com: <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> * {box-sizing: border-box} body {font-family: Verdana, ...

The URL functions properly in Postman, but encounters errors when used in Node.js

I've encountered an issue with a URL that functions properly in POSTMAN. However, when the same code is used in Node.js, it fails to work: const fetch = require('node-fetch'), express = require('express'), app = expre ...

Click on the link to go to another page according to the drop-down option selected

Here's a puzzling query that even Google fails to address. I've got two pages: page-1 and page-2. On page-2, there is a <ul> element and a toggle-button-box with the following code: <ul> <li><button class="button is-checked ...

The hyperlink functionality is disabled because Javascript is set to return false

JS Fiddle Example When using the 'FOO' and 'BOO' items in the navigation bar to open dropdown boxes, I have implemented a code that closes them when a click event occurs outside. This code has been working fine as shown below: $(docum ...

I attempted to utilize certain CSS properties, only to find that they were not being applied due to conflicts with Bootstrap's own CSS. I'm unsure what I should do next

click here for image .container, .container-fluid, .container-lg, .container-md, .container-sm, .container-xl, .container-xxl { --bs-gutter-x: 1.5rem; --bs-gutter-y: 0; width: 100%; **padding-right: calc(var(--bs-gutter-x) * .5);** **pa ...

"Encountering a 404 error with the angular2-in-memory-web-api

Currently, I am in the process of developing a 5 minute application using Angular 2 with reference to this particular guide: https://angular.io/docs/ts/latest/tutorial/toh-pt6.html. While working on the HTTP section, I encountered a 404 error due to the a ...

multiple urls causing duplication of states in angular ui routes

Currently, I am faced with an issue while using angularjs in combination with angular ui routes. The problem arises when dealing with multiple URLs for a single route. I have a state named "bookDetails" which corresponds to a book that has a unique id an ...

Anticipating the arrival of data from an unspecified child component prior to executing the effect

Suppose there is a parent component: function Parent({ children }) { useEffet(() => { // Perform action only after all children have returned their values via props (or context) }) return <div>{ children }</div> } How do I ensure ...

"Executing ng-click directive on a second click changes the route in AngularJS

Why does my ng-click only redirect to a new location on the second click? It should redirect to $location.path('/login.signin');, but it only works if I click the button again. It's strange. Where could this issue be originating from? Belo ...

I am utilizing client-side JS to send a large number of requests. What methods can I implement to enable my server to cache this content

Here's a bit of an unusual question from someone who is new to this - I have client-side JavaScript that is making API calls using the getJSON method. Since the content doesn't change frequently, I would like to store the results on my server an ...

After switching from jQuery to pure JavaScript, the code is now up and

After initially coding in jQuery + AJAX, I attempted to rewrite it in vanilla JavaScript. However, the code is not functioning as expected now. Can someone help me identify the mistake causing nothing to display when I run it through the server? I have che ...

Exploring ways to access data stored in interconnected models, such as MongoDB and NodeJS

As a newcomer to querying, I attempted a unique exercise to practice but unfortunately did not achieve the desired outcome. I have three models: const userSchema = new Schema({ info1: String, info2: String }, const serviceSchema = new Schema( { name ...

The swiper slider loop malfunctions when the number of slides is less than the double-value

When using **6 slides** with slidesPerView: 3, everything works fine. However, if I use 5 slides and set slidesPerView: 3, the loop stops after the last slide. var swiper = new Swiper('.swiper-container', { direction: 'ver ...