"Preserve the rotational orientation of a child element using Three

For instance, I connected a child rectangle measuring 2 by 3 to the main rectangle measuring 1.

This arrangement resembles three rectangles in a row.

parent.add(obj);

However, when I alter the rotation of the parent rectangle by 1 degree, it causes the children to also change their position and rotation in relation to their ancestor.

img.example

Is there a way to adjust the position without affecting the rotation?

Answer №1

When you add an object to a parent as a child and then change the parent's rotation or position, it will only affect the parent.

The child element's values remain untouched, but its position and rotation are calculated relative to the parent. There is no stored relationship between the child and the parent of the parent, which is why you cannot save the child's rotation in relation to the parent of the parent.

If you want to move along with the parent element only, you can calculate the children's position or rotation relative to the parent of the parent and store this information somewhere. However, setting this position and rotation for each child in every animation frame may not be practical.

To determine the child's position relative to the parent scene, refer to this guide on how to get the global/world position of a child object

A more effective approach

is to place other elements into the scene separately, rather than as child objects. If you need to perform operations on a group of objects, save their identifiers externally and retrieve the object by identifier when needed.

scene.getObjectById( 4, true );

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

Using AngularJS to dynamically change the background color of table rows based on the values stored in a data structure

I am looking to implement dynamic color backgrounds for table rows based on the state of a specific data structure Below is my attempt: <tr data-ng-repeat="shipping in shippings" data-ng-init="shippingIndex = $index" data-ng-class=& ...

Guide on including a JavaScript file in HTML during execution on Node.js

I have developed a basic nodeJs server with the following code in my server.js file: var http = require('http'); var fs = require('fs'); var path = require('path'); var server = http.createServer(function(req, resp){ // P ...

Nuxt component successfully implemented with async await functionality

Managing two distinct functions, where one converts images from any format to canvas and then to WEBP image format, while the other logs the converted image. I am encountering an issue where the result of the image is undefined when logged in the saveToBac ...

When using Websocket, an error message stating "Invalid frame header" will be triggered if a close message of 130 or more characters is sent

I am utilizing the ws node.js module along with html5's WebSocket. The Websocket connection is established when a user triggers an import action, and it terminates once the import is completed successfully or encounters an error. At times, the error ...

JavaScript click event to open a URL in a new window

I am trying to create a hyperlink with text using HTML, and I want it so that when the user clicks on it, it redirects to a specific URL. I am new to JavaScript! Here is my code: <a class="dt-button add_new_table_entry DTTT_button DTTT_button_new" tab ...

Unusual user interface actions following a double-click

I've been working with HTML code that uses KnockoutJS for data binding and DOM manipulation. One particular issue I've encountered is with highlighting a word on single-click and executing an action on double-click. Everything works as expected, ...

When the Angular script is executed, the variable is not defined

One of my custom directives receives an object named 'vm' in its scope, which contains a property/value pair (ccirCategoryIncidentI : 3) that I need to access. When I try to log this value with console.log(scope.vm.ccirCategoryIncidentI), it init ...

Having trouble with ReactJS: Why is this.setState not working?

Hello there, I am currently learning ReactJS and struggling with an issue where I keep getting the error message "this.setState is not a function". constructor() { super(); this.state = { visible: false, navLinesShow: true }; ...

Automatically fill in checkboxes based on user input

Having a simple problem here, I am attempting to dynamically populate check-boxes in an HTML form. However, when I try using the checked property of the checkbox in HTML, it doesn't work correctly. The checkbox remains checked whether I use checked=&a ...

Is there a way to enclose a mention within a unique span tag after highlighting it? Similar to how tags are implemented on platforms such

Currently utilizing an AngularJS plugin called ment.io for incorporating mentions. However, I am having difficulty figuring out how to customize the appearance of the selected mention. For example, in Stackoverflow: https://i.sstatic.net/bZrkh.png Or i ...

Utilizing Node gRPC for seamless transmission of server metadata to clients without any issues

When working from the client side, adding metadata for the server is a simple process: const meta = new grpc.Metadata(); meta.add('xyz', 'okay'); stub.service.Rpc(request, meta, (err, response) => { }); To access the above on the ...

I'm seeking assistance in identifying the issue with my form validation code. Could anyone lend a hand?

<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="./css/createanaccount.css"> <script src="https://kit.fontawesome.com/c90e5c3147.js" crossorigin=&quo ...

Refresh Angular 2 data after a related data update

I am facing an issue with my <select> elements in Angular. One for the Districts and another for the Cities. The districts are fetched using the getDistricts() function within the ngOnInit() function without any problems. However, I am unsure how to ...

Initiate gapi.auth2 upon VueJs initialization

I am currently developing a Vue.js web application that allows users to connect with their Google accounts. The login process, both front-end and back-end, is functioning properly: the Google sign-in button is displayed, the user clicks on it, and their a ...

Discover the secret to opening two JPG files on YouTube using just one URL!

I was curious about the way YouTube thumbnails function. Here is an example thumbnail from a random YouTube video. There is an hqdefault.jpg in the URL, followed by some variables that indicate the size. If we remove or change these variables, a larger im ...

The assigned type does not match the type 'IntrinsicAttributes & { children?: ReactNode; }'. This property is not assignable

I have been struggling to resolve this issue, but unfortunately, I have not found a successful solution yet. The error message I am encountering is: Type '{ mailData: mailSendProps; }' is causing an issue as it is not compatible with type &apos ...

Vuejs: Users can still access routes even after the token has been deleted

Upon logging out of my application, I have encountered a peculiar issue. Certain inner links, such as those within a user's panel, remain accessible even after I have logged out and deleted a token. However, other links are not. Any suggestions on how ...

The Aurelia application named "Greetings Earth" is experiencing complete malfunction

As I embark on creating a Sharepoint framework webpart, my aim is to incorporate Aurelia as the JavaScript framework. The process begins with generating a Sharepoint framework webpart using Yeoman, resulting in this folder structure. Here are the core fi ...

how to load CSS and JS files on certain views in Laravel 5.2

Currently, I am facing a situation where I need to ensure that the CSS and JS files are loaded only on specific views in Laravel 5.2. Due to my boss's decision to eliminate RequireJS for loading JS files on our blade templates, we are now exploring a ...

What is the best way to separate a comma-delimited string in JS without including JSON data?

I have a string that looks like this: ABC, CDE, [{"ab":"1","cv":"23"},{"ab":"1","cv":"2%3A1639251967619%2C%22v%22%3A1%7D"}] My goal is to split it into an array of length 3, w ...