Code Monkey home page Code Monkey logo

i3s-spec's People

Contributors

ajuanr avatar alunalunnnnn avatar chri7928 avatar jfoster126 avatar joalvarez avatar rexhansen avatar rvargasesri avatar siu avatar tamrat-b avatar w12594822 avatar youyunhua avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

i3s-spec's Issues

Questions about UV Mapping of Atlas Textures

Hi,

Recently I'm trying to display i3s buildings on Cesium.js,
the normals and vertices parsed from geometry binary show the buildings' polygons really well.
building without texture
then I parsed and got the uv0 for textures mapping,
I parsed each feature's uv0 in the node, and used features' uv (array) to map the node's texture onto the geometric polygons,
(each node has only one atlas image texture in the i3s layers I tested )
but it seems that the images mapped onto the polygon weren't matched.

My result:
mapping result
Correct looking (screenshot of ArcGIS web viewer):
correct result

I've checked some nodes textures, each node has only one aggregated texture image like this:
aggregated texture

So, my questions are:

  1. Are the uv of each feature in node the coordinates of the whole atlas texture? or I need to seperate the atlas texture into several subImages because the uv is the coordinate of subImages instead of a whole atlas.
  2. If the uv is the coordinate of subImage, how can I sperate the atlas into subImages? I saw there is an attribute named subimageRegion from spec document, but I don't know where the attribute is.

Thanks for reading such a long question.

ps. codes of how I parse the uv0: github link

singleComponentParams

In the description said:
"Objects of this type extend vestedGeometryParams and use one texture and one material..."

But you have an attribute of textureID as array of numbers. Should it be just a single number?

Thanks

Image size

Hello,

I'v got some sample of the I3S format, and there the actual image size is 512x1024.
x size is 512.

So in order to know the y size I need to decode the image.

I need this information in case the texture is bigger than I need and in this case I won't use it.

Is it possible to add y size field to the format?

Thanks.

I3S convert tool is failed

hello!
there are some errors when i use the i3s_converter tool,the slpk is producted by arcgis pro and
the error is "Failed to decode image nodes/19-1-0-0-0-2-0/textures/0_0 using method jpg".
Can you add an error skip command to you program,eg:try sth except pass.
IMG_2446

geometry.bin file struct

hello!
thans for the brief description of the geometry.bin file, can I know the detail information of the file ?e.g. struct?

options for planetary

More of a question than an issue.

In looking over the spec I see statements like

  • The location of all index-related data structures such as node bounding spheres SHALL be specified using a single, global geographic WGS 84 CRS.
    and
  • Allowed CRS specified using an EPSG code include: EPSG:4326.

but within the examples given, WGS 84 doesn't seem hard-wired and a specified WKT (or WKT v2) can be defined. Does this mean that other bodies like Mars can be defined?

If there are too many assumptions within the spec to allow for off-Earth bodies, what happens when the geospatial community needs to transition away from WGS84 (to the next best ellipsoid)?

How to set pbr material ?

Like the last issue, there is only one materialDefinitions in a slpk file.

In glTF there is name of every material, but I didn't see that in materialDefinitions.cmn.md, I really can't see how to control each and every node's material and texture.

Can you give me some code template about compresion geometry by draco?

Hello,Intckarl:
I use draco_decoder.exe and draco_encoder.exe to compress/uncompress geometry(include:position,normal,uv,color...) into 1.bin.gz file. This approach uses an intermediate file
(eg:obj file) and i did't like this way.So,can you give me a sample code that compress/uncompress the
geometry into draco.thank you very much!

i3s 1.7 geometry file

hello,I find 1.bin.gz file in geometries floder in i3s 1.7 and Is it comes from Draco compression?

attributeStorageInfo

In the desciption of the attributeByteCounts it says: "For string types only. Represents the byte count of the string, including the null character."

But the example given is not representing it and confusing.

{
"key": "f_2",
"name": "Family",
"header": [
{
"property": "count",
"valueType": "UInt32"
},
{
"property": "attributeValuesByteCount",
"valueType": "UInt32"
}
],
"ordering": [
"attributeByteCounts",
"attributeValues"
],
"attributeByteCounts": {
"valueType": "UInt32",
"valuesPerElement": 1
},
"attributeValues": {
"valueType": "String",
"encoding": "UTF-8",
"valuesPerElement": 1
}
}

SharedResource encoding

Hi,

In store module, shared resource encoding is missing (like for nidEncoding, or feature encoding...)

3D object geometry format undocumented?

I am unable to find the specification for the binary geometry format indicated in 3D object and mesh SceneLayers.

Can someone point to me where I can find documentation on this file format?

In practice the content-type is application/octet-stream and it is delivered as a .bin - I'm guessing it's a TLV format reminiscent of ASN.1 but unable to find any official information about this ".bin" format.

This is the data I'm trying to work with:

$ hexdump -C 0.bin |head
00000000  1b 0f 00 00 1f 00 00 00  05 36 02 ba 9b 12 ab b8  |.........6......|
00000010  d5 5e 5c 41 60 4c 05 ba  1d b9 b0 b8 d5 5e 5c 41  |.^\A`L.......^\A|
00000020  f2 8b 01 ba 73 b2 b7 b8  d5 5e 5c 41 86 b4 08 ba  |....s....^\A....|
00000030  fa 5f b1 b8 3e 5f 5c 41  c4 17 0a ba 4f 84 9c b8  |._..>_\A....O...|
00000040  3e 5f 5c 41 4f 1f 0b ba  ba 24 b8 b8 d5 5e 5c 41  |>_\AO....$...^\A|
00000050  ce df ff b9 05 9e 97 b8  3e 5f 5c 41 60 4c 05 ba  |........>_\A`L..|
00000060  1d b9 b0 b8 d5 5e 5c 41  05 36 02 ba 9b 12 ab b8  |.....^\A.6......|
00000070  d5 5e 5c 41 83 98 0b ba  a6 78 55 b8 3e 5f 5c 41  |.^\A.....xU.>_\A|
00000080  ce df ff b9 05 9e 97 b8  3e 5f 5c 41 4d 87 f5 b9  |........>_\AM...|
00000090  9e 25 75 b8 3e 5f 5c 41  b6 94 f2 b9 dd 98 64 b8  |.%u.>_\A......d.|

SharedResource

Hi,

In SharedResource there is a materialDefinitions field, and the explanation of it is:
"Materials describe how a Feature or a set of Features is to be rendered."

So it suppose to be an array of material definitions (materialDefinition[])?

LoD Selection

Hi,

I am having trouble to understand the LOD selection.

For example, if I have:

"lodSelection": [
{
"metricType": "maxScreenThreshold",
"maxError": 539.29734222795435
}
],

And mbs:

"mbs": [
-43.193687596934836,
-22.968234420300959,
196.58792681110327,
539.29734222795435
],

My graphics configuration is FOV of 3.0, aspect ratio of 1.0 and near plane at 1.0… window size is 800x800.

How do I calculate when to change the LOD?

Question about LoD Selection

Hi, Guys
I have a question about "LoD Selection". When we are working on loading a slpk, we find all the nodes' index document say maxError: 0. So I want to know how to deal with maxError: 0. And is the data legal?

Thank you.

The limited of i3s node size?

hi devs

How big can a node size be?I'd like to know the limitation of a node size in slpk file(gigabytes?terabytes?)
Specifically, the geometry binary file size / feature attribute binary file size / texture resources size ...

thanks.

LoD Selection structure

Hi,

In the spec there are two fields: metricType and maxError, but in the explanation it is written that "Cookers can add as many LodSelection objects as desired, but must provide one as soon as the layer's lodType is not null. Of the three min/avg/max values, typically only one or two are used."

So as I understand, the cookers can add avgScreenThreshold as metricType and than the second filed will be avgError? Or you meant something else?

Thanks

How to modify the overall height of the model in slpk file?

Because some software can't change the height when exporting the SLPK file, the height of the model is inconsistent when multiple SLPK files are imported into the same software. How can the overall height of the model (including all nodes) be changed by modifying the SLPK file?

Extent should be 3D

The extent as shown here is 2D. This seems strange and limiting for a point cloud, which is naturally a 3D object. Is this information available elsewhere?

layers and sub-layers in 1.7

Hi,

I have a question regarding the layers and sub-layers structure:

  1. Why layers and sub-layers structure supports only buildings, and sub-layers only group, 3D objects and points?
  2. How can I divide into layers integrated-meshs and overlayers on-top of it, e.g. terrain, vegetation, roads...
  3. Why layer and sceneLayer has the same file name 3DSceneLayer? It's confusing.

Thanks

Any sample UI client or library based on .NET for viewing/streaming i3s services?

We are doing a kind of proof of concept using .NET and Unity for viewing/streaming i3s services,
Is there any known library which is able to render/extract the i3s geometries based on .NET. We cannot use ArcGIS Runtime for .NET because of the underlying native C++ Runtime Core.

We only found PDAL based on C++ (points only) and CesiumJS based on JavaScript.

Here is a sample i3s scene and service:
Scene View
Scene Layer

Any help would be appreciated.
@hobu @tfili

Edit Feature Attributes In ArcScene

With the workflows I perform in house as well as for clientele, I think it would be extremely valuable to be able to edit attribute data in ArcScene, whether the data is a BIM model of a 3D feature.

Question: Material Definition

Hello,

I'm trying to understand more deeply the format. Right now I'm focusing on the material.

In materialDefinition there are three parameters that I don't understand:

  • vertexRexion
  • vertexColors
  • useVertexColorAlpha

What do they mean and how should I use them?
Why they are defined as array (boolean[])?

Thanks
Three of them defined as boolean array (boolean[]). the question is why?

i3s to other 3D format.

Hope this finds you well.

I'm trying to use an i3s file to create a VR model in CityEngine.
My initial thought was that CityEngine would be able to take i3s or slpk, but it turns out that it doesn't. Do you have any recommendations on how to convert or work around the current limitation?

Add Skyline PhotoMesh software to the “Where Can I Use...?” listing

Hello @Tamrat-B ,
My name is Yaniv Dayan from Skyline Software Systems. producer of PhotoMesh (http://www.skylineglobe.com/SkylineGlobe/corporate/Products/photomesh.aspx) software, that produces high-resolution, textured, 3D mesh models from standard 2D photographs.
One of our supported output formats is I3S, and we wanted to see if it is possible to add our software to the “Where Can I Use...?” listing (https://github.com/Esri/i3s-spec#where-can-i-use):
Vendor: Skyline / Skyline Software Systems, Inc.
Product/URL: PhotoMesh (http://www.skylineglobe.com/SkylineGlobe/corporate/Products/photomesh.aspx)
Scene Layer Type: IntegratedMesh
Please let me know what is the best way to make this happen.
(I also sent a comment on Update README.md)
Thanks for your help and the great format.

How to adjust 1.7's texture

There used to be shared resourse in each node to contorl material and texture, but in 1.7, the shared resourse is deprecated, now there is only one materialDefinitions in 3DSceneLayer.json.

So how does it control texture in every node?

Features Attributes

Hi,

In features file there is a definition of the geometry structure:

vertex ==> offset, number of elements...
normal ==> offset, number of elements...

I don't see the same definition for the features, such as Id and face range, where can I find their offset information?

Thanks

Parameter Definition Issues

I found maxScreenThresholdSQ under lodSelection, with a similar parameter named maxScreenThreshold without SQ.

But in your doc, there is only description for maxScreenThreshold, so I'm wondering what does SQ means and how does it effect lodSelection

Thank you

i3s_converter.exe not support unit of chinese

i3s_converter.exe not support unit of chinese
{
"version" : "0.5.11192019",
"log" : [{
"code" : "7009",
"level" : "Error",
"message" : " JSON parsing error in "/3dSceneLayer": JSON string "heightModelInfo.heightUnit" is not a known value for this enumeration (米)"
}
],
"success" : false
}

node

Hi,

In node document missing parentIndex.

Performance Issue on High Resolution Display

We have a slpk file directly generate by Context Capture from oblique photographic images.
We publish a service and view it online in SceneViewer.
It doesn't have any geometry at root(level 1) and level 2 nodes. Although we believe this would be a Context Capture problem, but also something we want to ask here.

On my own computer, with a 1080P display, it looks fine.
But on other computer, with dual-4K display, it took very long time to load in full extent, and seems fine if only focus to very small, local extent.

We've tried to turn up the maxError value on level 3, I believe that would force to load only level 3 which is smaller and faster.
Still fine in my 1080P display, very little improve in dual-4K display.

So I start to wonder, how does it react on high resolution display? What's the difference between 1080P and dual-4K display? What can I do to improve this?

Thank you.

draco compression question

Hello,devs
I want to determine whether to remove duplicate vertices after reading the 0.bin.gz file and then use Draco compression or directly input the read duplicate nodes directly into the Draco mesh and use Draco to remove duplicate vertices.

How to write attribute file(bin)?

I found that in ArcGIS Pro generated slpk files's attribute file, there are many blank in the beginning, and the attribute value would repeate for so many times, sometime even with unrelevant strings. Like this:

image

Can you tell me what's the rules here?

And how to write the attributeStorageInfo part?

Draco compression

Hello,devs

I find draco compression in version1.7 document ,but ,i check the 1.bin.gz file and find it is diffent from google official document.The i3s spec document is too cryptic for me, so could you give me
a sample code for it that describe how to compress i3s geometrybuffer into draco file.thank you
very much!

i3s_converter doesn't properly set exit code

The i3s_converter application doesn't set the exit code to a non-zero value if it fails. Ideally, the exit code should be non-zero if an error occurred and zero if no error occurred.

Error converting to SLPK 1.7 from 1.5

Hi,

Currently trying to convert a 1.5 slpk file to 1.7 and the following message occurs

{
"version" : "0.5.07162019",
"log" : [{
"code" : "7009",
"level" : "Error",
"message" : " JSON parsing error in "nodes/0-2-1-2-1-3-1-1-0-3-3/features/0": * Line 1, Column 1\n Syntax error: value, object or array expected.\n"
}
],
"success" : false
}

We know that we have some empty nodes, but is there any way to skip this issue, as the conversion fails.

Thanks

OBB

Hi, I have a couple questions:

  1. I'm not familiar with quaternion, how do I use it in order to get the correct orientation?
  2. What are the units of quaternion's members? Is it degree, degree, degree, meter?

Thanks

A few question regarding to 1.7 Update.

By comparing 1.6 and 1.7, one could find that they are basic the same. All different I can find is 1.7 now support Draco compress and nodepages.

Even in ArcGIS Pro 2.4, it still only create version 1.6. One have to use the converter to update to 1.7.

By studying the outcome, I found that 1.7 make leaf node much smaller, with produce more nodes in total, thus make the result SLPK much larger.

Also, I found a hashtable in both 3d object and Integrated Mesh, which you failed to mention in the doc.

So far one could tell that 1.7 cut the nodes smaller and draco it more smaller to speed up transmitting, and use nodepages and hashtable to speed up querying. but in practice, it cause the server overwhelmed by sending too much requests. And actually make it slower to load.

Please give me an answer, Thank you.

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.