Unable to use computeVertexNormals with a model loaded from JsonLoader

Why does the model always display in FlatShading even though I have used computeVertexNormals? The model is exported without normals for optimization purposes, loaded into 3JS using JsonLoader, and converted to BufferGeometry.

The material is set to SmoothShading. For a better demonstration, please refer to this jsFiddle: http://jsfiddle.net/2w9Lkjbm/6/

Answer №1

Utilizing the following technique:

bufferGeometry.fromGeometry( geometry );

results in a non-indexed BufferGeometry.

Referred to as "triangle soup", this non-indexed BufferGeometry does not share vertices, therefore computeVertexNormals() assigns all vertex normals to match the face normal.

In this scenario, it is recommended to execute computeVertexNormals() on the original geometry first -- prior to transitioning into BufferGeometry:

model.geometry.computeVertexNormals();

var bufferGeometry = new THREE.BufferGeometry();

bufferGeometry.fromGeometry( model.geometry );

Check out the updated fiddle: http://jsfiddle.net/2w9Lkjbm/8/

three.js r.85

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

Learn the process of integrating VueJS with RequireJS

I am attempting to set up VueJS with RequireJS. Currently, I am using the following VueJS library: . Below is my configuration file for require: require.config({ baseUrl : "js", paths : { jquery : "libs/jquery-3.2.1.min", fullcalendar : "libs/ful ...

Creating a singular and distinctive string by combining two keywords

Is it possible to create a single distinct string by combining two keywords regardless of the order in which they are entered? EDIT: The keywords in question are numerical rather than alphabetical characters. The following example is merely for explanator ...

Using Vue.js to mark a checkbox as selected

I've searched extensively and tried various combinations, but I'm unable to initialize my checkboxes as checked. For example: <ul class="object administrator-checkbox-list"> <li v-for="module in modules"> <label v-bin ...

Extracting a precise value from an array nested within another array

Within my nested associative arrays, I am trying to figure out how to splice a specific value. In a regular array, this is easily done with: arr.splice(arr.indexOf('specific'), 1); But when it comes to an array structure like this: arr['h ...

Is it possible to achieve dynamic updating in Angular without utilizing ng-repeat? (with the use of Firebase)

Is there a way to dynamically update the DOM without utilizing ng-repeat in your template? It appears that when using ng-repeat to load a list of objects, any additions or deletions from the database automatically reflect in the DOM. However, if I simply u ...

Angular: Discovering and retrieving all images within a div container

I am on a quest to locate all image tags within a specific div. These image tags are nested within paragraph tags inside the div. I attempted to create a plunkr to accomplish this task, but unfortunately, I haven't had any success yet. If anyone is ab ...

How do I initiate a custom button click event in React from an event handler in another component?

I have a unique React application that utilizes the Material UI framework for its user interface design. Specifically, I have developed a specialized button component that customizes the default Material UI button and integrates with Redux. Within the ren ...

Error encountered due to circular structure in the data being posted in the

const formulaData = $(htmlContainer).find("ins").map(function (i, el) { return { fName: $(el).attr("data-record-name"), fID: $(el).attr("data-record-id"), fContent: $(el).text() } }); //keep if (for ...

Unable to append additional data when making a jQuery ajax call with form data

Below is the script for my ajax call, in which I have included extra fields along with the form data. function paging(div_id, module, page_value) { var active_customer_list = $("#active_customer_list").val(); $("#"+div_id).html(loader); ...

"Using HTML to assign a unique identifier to an image within

Apologies in advance for any errors as I am relatively new to html. I am attempting to construct a table with images that have onclick events, so that each clicked seat is tracked and its id is added to a list to change the class. Each image has been give ...

React sends a POST request that returns with an empty body

Greetings, I am currently developing a react/express application. Successfully made a GET request from my server but facing challenges with a POST request. The server returns an empty body despite having body-parser as a dependency and accepting json as co ...

What could be the issue with my injection supplier?

When running the following code, the configuration works fine, but an error is returned: Uncaught Error: [$injector:unpr] Unknown provider: AngularyticsConsoleHandlerProvider <- AngularyticsConsoleHandler <- Angularytics Code snippet: angular.modu ...

Rotate Text in HTML <thead> Tag

I need assistance with rotating a table header. https://i.stack.imgur.com/hcvxx.png The HTML th elements within the thead section are described as follows: <th> <span class="rotate-all">Period</span> </th> <th> < ...

Struggling to grasp the concept within this particular Array.map callback

Within my React component, I am exploring the concept of the this keyword and its context with the following code snippet. While this example may seem simple, it is part of my efforts to enhance my comprehension. const NAVBAR_ITEM_TITLES = ["Home" ...

CheerioJS was unable to identify and select the anchor tag

I am trying to extract all the download links from the HTML source provided below: https://i.sstatic.net/CvEMF.png Below is the code I am currently using: export const getSingleMusic = async (url) => { const html = await getHtml(url) const $ ...

What are some React component libraries compatible with Next.js 13.1?

I'm exploring Next.js and experimenting with version 13.1 and the new app directory. Is it feasible to accomplish this without sacrificing the advantages of server controls? An error message I encountered states: You're attempting to import a c ...

Ways to break apart a string of text without a regular pattern

Here is the data I am working with: Huawei Y7P Art-L28 (4/64gb) (AAAAAAAAAAAAAA) EXP:02/19/2020 Huawei Y9 prime 2019 (BBBBBBBBBBBBBBB) EXP:07/17/2019 Oppo A31 4gb/128gb (CCCCCCCCCCCCCCC) Vivo Y15 5000mah 4GB/64GB (1901) (DDDDDDDDDDDDDDD) EXP:06/14/2019 I ...

Swap two pairs of elements in an array in a random order

I have a list of team members and also 2 substitute players: team = Samson, Max, Rowan, Flynn, Jack subs = Struan, Harry I am facing a challenge in randomly swapping the 2 subs into the team. The difficulty lies in ensuring that only these 2 elements are ...

What is the procedure for employing suitscript within Restlet in the NetSuite environment?

Currently, I am working on creating a restlet in Netsuite to retrieve details about a specific Field. The code snippet I have been using is as follows: error code: UNEXPECTED_ERROR error message:TypeError: Cannot call method "getType" of null (login.js$12 ...

The value 'true' was returned for an attribute 'exact' that is not of boolean type

How can I resolve this warning? Sample Code const Main = (header, navigation) => { return ( <> <div> {navigation !== false && <Navigation />} </div> </> ) } I attempted this soluti ...