I’m trying to learn NGE. Embarrassed to ask, but I can’t find a simple example of connecting nodeGeometry.json to the project page. Can someone tell me how to do this or give me a link?
Babylon.js Node Geometry Editor (babylonjs.com)
Here is a playground loading a node geometry from the snippet server:
If you want to load from a file simply replace:
ParseFromSnippetAsync
By:
NodeGeometry.Parse
Doc: Babylon.js docs
Thanks!
But maybe there are simpler examples for beginners?
This is the entry point you want to digest:
https://doc.babylonjs.com/features/featuresDeepDive/mesh/nodeGeometry#loading-and-updating-from-file
Of course, I apologize for distracting you from your business. But I’m not sure if this is the solution. Because such a design does not work. Or I misunderstood something.
It works - const nodeGeometry = await BABYLON.NodeGeometry.ParseFromSnippetAsync(“IJA02K#14”, “”, true);
It doesn’t work - const nodeGeometry = await BABYLON.NodeGeometry.Parse(“nodeGeometry_7.json”, “”, true);
Okay, I’ll try to figure it out on my own. I’m sorry again.
If you look at the doc I shared you will see that there is an example to read from a Jason. You cannot provide the url of the json file to Parse
. You need to fetch the file first and then provide the json OBJECT to the function
Please read the doc, everything is there
Of course, I substituted his file, saving it to my computer. Okay, I think there’s no point in further correspondence. I’ll study the documentation. Thanks, bye.
It is all Jason 's fault cc @PirateJC
I wouldn’t trust any Jason examples. That feels risky. Referencing JSON on the other hand. That’s probably smarter.
Jason is a real genius. Apparently only he can figure it out. Apart from his town, I don’t see any examples on the subject of NGE at all
ok let me copy paste the code from the doc for you:
const assetsManager = new BABYLON.AssetsManager(scene);
const nodeGeometryFile = assetsManager.addTextFileTask("load my node geometry", "https://yoururl.com/nodeGeometry.json");
// callback
assetsManager.onFinish = async (tasks) {
console.log("all tasks successful", tasks);
// files loaded as text need to be parsed to JSON to use
const nodeGeometryJSON = JSON.parse(nodeGeometryFile.text);
// parse json object into node geometry
const nodeGeometry = await BABYLON.NodeGeometry.Parse(nodeGeometryJSON);
}
// load all tasks
assetsManager.load();
Thank you Deltakosh. You helped me a lot!
I think there is a small error in the code.
It must be so - assetsManager.onFinish = async (tasks) => {}
I added a box from the starting example (https://nge.babylonjs.com/) on my own.
Maybe it will help someone figure it out faster:
const assetsManager = new BABYLON.AssetsManager(scene);
const nodeGeometryFile = assetsManager.addTextFileTask("load my node geometry", "nodeGeometry.json");
// callback
assetsManager.onFinish = async (tasks) => {
console.log("all tasks successful", tasks);
// files loaded as text need to be parsed to JSON to use
const nodeGeometryJSON = JSON.parse(nodeGeometryFile.text);
// parse json object into node geometry
const nodeGeometry = await BABYLON.NodeGeometry.Parse(nodeGeometryJSON);
// material
var myMaterial = new BABYLON.StandardMaterial("myMaterial", scene);
myMaterial.diffuseColor = new BABYLON.Color3(1, 0, 1);
// BoxBlock
const Box = nodeGeometry.createMesh("Box");
Box.material = myMaterial;
}
// load all tasks
assetsManager.load();