Step-by-step guide to integrating a simple LOD system for a 3D JSON asset

I'm facing difficulty implementing Level of Detail (LOD) for a 3D object using JSON data. Below is my current implementation:

loader.load('models/robot-threejs/robot.json', function(object){
    var lod = new THREE.LOD(object);

    for (var i=1; i<=3;i++) {
        console.log("Level"+i);
       lod.addLevel(object,i);
         }

         lod.updateMatrix();
lod.matrixAutoUpdate = false;

    //     lod.updateMatrix();
    //     lod.matrixAutoUpdate = false;
        
        scene.add(lod);
     //scene.add(object);
    // object.position.set(30, 30, 30);
    
})

Answer №1

Your implementation of THREE.LOD needs some adjustments.

  1. When creating a new instance of THREE.LOD, remember that the constructor does not accept any parameters. Instead of passing an object like this: new THREE.LOD(object);, simply use new THREE.LOD();
  2. To achieve varying levels of detail, make sure to create distinct meshes with different geometries instead of adding the same mesh multiple times to the LOD. You'll need to generate these geometries on your own as Three.js won't do it automatically. Consider using the SimplifyModifier for help in this process.
  3. Avoid unnecessary matrix updates in this context as they are not required.
  4. Don't forget to call lod.update(camera) within your render loop to observe changes in detail.

I highly recommend consulting the official LOD documentation and examining the code in this example to deepen your understanding of how it operates.

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

Compiling Enum classes from Typescript to JavaScript leads to errors in export

I'm currently facing an issue with exporting Kotlin Enum classes to JS. @OptIn(ExperimentalJsExport::class) @JsExport enum class interEnum { SAMPLE } When I import the enum into an Angular Project as an NPM module, the corresponding TS block in m ...

When using $resource.save, it returns a "Resource" instead of just an ID

For some reason, I am struggling with a seemingly simple task and cannot find a solution by going through documentation or other Angular related questions on SO. I may not be the brightest, so I could really use some help here as I am feeling stuck. Take ...

Is it possible to update only the necessary data using the Update Controller?

Update Controller exports.UpdatePanelMembers = (req, res) => { const { panelId } = req.params; if (panelId) { Panel.findOneAndUpdate( { _id: panelId }, { panelMembers: { member1: { memberId: req.body.pan ...

Using Bootstrap CSS and JavaScript specifically for carousel functionality

Custom Styles and Scripts for Bootstrap Carousel Using Carousel with Controls https://getbootstrap.com/docs/4.0/components/carousel/ <div id="carouselExampleControls" class="carousel slide" data-ride="carousel"> <div class="carousel-inner ...

How come my reducer isn't changing the state of my store with ImmutableJS?

I have the following code within my reducer: const copy_states = fromJS(state); const i_copy_jobs = copy_states.get('calendar_jobs').get(s_from_day_key).get(s_dept_id).get(s_job_id); let i_calend ...

Is there a way to determine when all Angular commands have finished executing through Javascript?

I have been using the following code to determine when my webpage has finished loading, however, it seems like there might be an issue. It appears that the Angular components are not yet executed even when the document.readyState is complete: page.ope ...

Tips for obtaining the top 3 highest-value objects in a JavaScript array over all other elements

I am working with an array that contains objects, each with two properties: name and value. array = [ { name: 'name1', value: 0 }, { name: 'name2', value: 2 }, { name: 'name3', value: 4 }, { name: 'n ...

html safeguarding user accounts

function Authenticate() { loggedIn = false; username = ""; password = ""; username = prompt("Please enter your username:", ""); username = username.toLowerCase(); password = prompt("Please enter your password:", ""); password = ...

Allowing access from different domains when using Angular.js $http

Whenever I encounter a CORS issue while developing a webapp, my go-to solution is to brew some coffee. However, after struggling with it for some time, I am unable to resolve the problem this time and need assistance. Below is the client-side code snippet ...

Creating Low-Poly Terrain with a Touch of Serendipity

Looking to create terrain in a low-poly style inspired by the landscapes in Cube Slam and this video. I experimented with the webgl_geometry_terrain.html example, but it's still generating smooth terrain instead of the flat polygons I'm aiming fo ...

Learn how to create sequential animations for two objects with distinct animations using Three.js

As a beginner in 3D animation using Three.js, I have successfully created an animation for one object using the VectorKeyframeTrack function. Now, I am looking to animate two different objects separately, with one starting after the other has completed a c ...

A mysterious issue arose while trying to retrieve the script (Service Worker)

After disconnecting from the internet, my service worker is generating the following error: (unknown) #3016 An unknown error occurred when fetching the script This is what my service worker code looks like: var version = 'v1' this.addEventLis ...

Error: The function 'enter' cannot be called on the data selection from the SVG append and attribute select statement in the code

I am attempting to replicate the force-directed graph showcased by Bostock in this example https://bl.ocks.org/mbostock/4062045 using my own dataset. By leveraging Django serializers to parse the JSON-formatted data, I have successfully retrieved the requ ...

Box Pattern with Pop-Up Modal

Check out the grid of squares I've coded below: <div class='square-container'> <div class='square'></div> <div class='square'></div> <div class='square'></div& ...

Is it possible to encase <v-img> within an anchor element?

I am currently using Vuetify 1.5 and have included a couple of <v-avatars></v-avatars> elements in which there is a nested <v-img></v-img>. I attempted to enclose the img tags within an a tag but encountered an issue wherein the ima ...

Modifying Image on Tab Click using jQuery

In my current WordPress project, I am working on dynamically changing an image based on the tab that is clicked. I would like to use jQuery's fade effect to smoothly replace the image with a new one that is relative to the specific tab being clicked. ...

script to pause video using jQuery

I have a script that works perfectly, but currently it only stops an instance of a playing video if a new video is started. I want to modify the script so that ALL instances of playing videos are stopped when the function stopAllButMe(); is called. Can s ...

Transferring Live Information Between Two Controllers

How can I transfer the 'header' and 'content' from a controller's $scope element (specifically the 'header' and 'content') to another page that is redirected to upon clicking a button? The current setup involve ...

Generating numerous circular elements for each item in the dataset using D3

My dataset consists of various years and corresponding numerical values for each year as shown below: "data":[ ["1951","306","27","159","34","82","4"], ["1956","426","41","203","47","119","16"], ["1959","562","67"," ...

The capability to scroll within a stationary container

Whenever you click a button, a div slides out from the left by 100%. This div contains the menu for my website. The problem I'm encountering is that on smaller browser sizes, some of the links are hidden because they get covered up. The #slidingMenu ...