Coder Social home page Coder Social logo

Comments (7)

javagl avatar javagl commented on August 16, 2024

As far as I know, there is no software that can assign feature IDs to vertices directly. (I have heard rumors that Blender can assign ~"per-vertex attributes", but this would not be exported to glTF by default). You have to know which vertex should receive which ID, and assign this information to the vertices when you are creating the glTF.

I'm also not aware of any open-source software or library that can (officially) generate glTFs that have this extension. I recently added support for this extension in 3d-tiles-tools, and an example for assigning feature IDs to vertices is shown in the ExtMeshFeaturesDemo.ts. But this is not part of any official API, and it may be changed arbitrarily or even removed at any time. Maybe there will be broader support for this extension in the future.

from gltf-tutorials.

chen21439 avatar chen21439 commented on August 16, 2024

@javagl thank you for you reply,i pull the 3d-tiles-tools and run the ExtMeshFeaturesDemo.ts but it throw a error
image
in method savePixelsInternal

const data = putPixelData(pixels, new Uint8Array(width * height * channels));

the data is empty

from gltf-tutorials.

javagl avatar javagl commented on August 16, 2024

From a quick glance, this error seems to come from the ndarray library. What happens when you run this test:

import { savePixels } from "ndarray-pixels";
import NdArray from "ndarray";

async function runTest() {
  const sizeX = 3;
  const sizeY = 3;
  const pixels = NdArray(new Uint8Array(sizeX * sizeY), [sizeX, sizeY]);
  for (let x = 0; x < pixels.shape[0]; x++) {
    for (let y = 0; y < pixels.shape[1]; y++) {
      pixels.set(x, y, x * sizeY + y);
    }
  }
  console.log("pixels ", pixels);
  const image = await savePixels(pixels, "image/png");
  console.log("image ", image);
}

runTest();

from gltf-tutorials.

chen21439 avatar chen21439 commented on August 16, 2024

@javagl image it shows that

from gltf-tutorials.

chen21439 avatar chen21439 commented on August 16, 2024

i think the problem occur in ndarray-pixels-node.cjs putPixelData()
image

from gltf-tutorials.

javagl avatar javagl commented on August 16, 2024

There seems to be a difference between a JavaScript and a TypeScript context. I haven't understood all the details here yet, but opened donmccurdy/ndarray-pixels#156

As a quick fix, you could change the code that fills the pixels, to anticipate that there are 4 channels (and the values are written into channel 3):

  // Create an image with integer values that serve as feature IDs
  const sizeX = 3;
  const sizeY = 3;
  const pixels = NdArray(new Uint8Array(sizeX * sizeY * 4), [sizeX, sizeY, 4]);
  for (let x = 0; x < pixels.shape[0]; x++) {
    for (let y = 0; y < pixels.shape[1]; y++) {
      pixels.set(x, y, 3, x * sizeY + y);
    }
  }

(I haven't tested it thoroughly, but it should solve the issue for now).

But note that the example only generates "some dummy data", only for testing the implementation of the extension. I have also opened CesiumGS/3d-tiles-tools#62 to track the process to create an extended/updated/fixed demo.

from gltf-tutorials.

javagl avatar javagl commented on August 16, 2024

I assume that this can be closed for now.

But a small aside: Somone wrote a nice summary of how to add metadata information to models in Blender at https://community.cesium.com/t/gltf2-0-in-ue5-2-metadata-ext-structural-metadata-ext-mesh-features/26873/8 . There may be some manual steps involved, but it will certainly provide a good starting point.

from gltf-tutorials.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.