Yes. For contributions outside of AGI's Cesium team, we'll need to get a CLA in place, but I don't think it will be a problem (#12).
With 3D Tiles, our initial focus is to get heterogeneous streaming 3D content into Cesium. I have not personally talked to OGC, but I agree this could complement 3D Portrayal SWG since 3D Tiles define the streaming format itself.
I have not talked to the PointDown crew specifically about 3D Tiles, but I have talked to them when they first started PointDown. Cesium's requirements, e.g., for high-precision vertex positions, temporal visualization, etc., will likely make the 3D Tiles' point cloud payload more involved than a typical point cloud app would want, but I am happy to dive deeper here.
Yes, I expect AGI to have a similar position for 3D Tiles as terrain. I also expect that parts of the server-side tools will be open-source; for example, AGI is a major contributor to the open-source COLLADA2GLTF project.
I agree, this will really help demonstrate the value of 3D. Just like KML and the Cesium API, 3D Tiles will support extrusions and, of course, full 3D content.
GHT - for potree, see #19.Patrick
--
You received this message because you are subscribed to the Google Groups "cesium-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cesium-dev+...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
You received this message because you are subscribed to the Google Groups "cesium-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cesium-dev+...@googlegroups.com.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "cesium-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cesium-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "cesium-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
Yes, we need to finalize the spec before bringing the implementation into master.
Also yes, but these will be low-level implementation details like improvements to glTF.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Patrick,
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Well... yeah! Haven't we long observed that tightly-fitting bounding volumes of child tiles don't necessarily fit inside tightly-fitting bounding volumes of parent tiles?
The simple example is using bounding spheres for a quadtree with a single tile at the root (ignoring the fact that bounding spheres are probably not a great choice). The root tile's bounding sphere wraps the whole Earth. The bounding spheres of the children are much smaller, but they "stick up" outside the parent sphere.
I guess this probably can't happen with the bounding volumes currently used in 3D Tiles. Although, it's safe to assume you're turning those bbox-with-height-range volumes into OBBs on the client, and it might happen with the OBBs (I'm not sure).
In any case, if the intention is to support more bounding volumes in 3D Tiles, I guess I'd turn your question around: is there any use case where child BVs extending beyond parent BVs is a problem, as long as descendant content all fits inside the parent BV? Certainly hierarchical culling still works fine.
To be clear, I'm not talking about content bboxes (which I understand are optional). I'm talking about the content itself. The client will not try to verify this or anything, it's just the rule that makes culling work right.
You received this message because you are subscribed to the Google Groups "cesium-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cesium-dev+...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
version=1.0&service=3DPS&request=GetScene&format=3dtiles&crs=EPSG:3857&boundingbox=407255,5866253,483505,594003&layers=my3dlayer
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
i'm new with cesium and 3d-tiles.
i need some help of conzeption and implementation.
i load a citygml to 3dcitydb and export the collada files as tiles wich i converted with the colladaToBglTFConverter.jar to bgltf.
so now i have folders of the tiles with the gbltf files in it.
how could i show it in cesium?
I download the branch "3d-tiles". but i think i have to put the "build" folder of the cesium projekt to it.?
I add the code:
var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
url: '../../data'
}));
but i get the error "Cesium.Cesium3DTileset is not a function"
so, is there a detailed description how to run this branch and load it with 3d-tiles?
Where does cesium knows which tiles it has to show? Does it have to load a tileset.json file and how i will get it?
does bgltf store the full coordinates (long lat) or relative postitions?
Thanks
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "cesium-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cesium-dev+...@googlegroups.com.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi NJK,Yes, sprites can be done either through instanced glTF with a custom shader or the upcoming vector tile. For example, see:Patrick
On Mon, Aug 1, 2016 at 11:22 AM, Nicholas Kennedy <col...@gmail.com> wrote:
Patrick,Are there any plans to support sprites in the 3D tiles branch? I imagine it would be similar to the billboard in the current API.v/rNJK
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
I've never used Cesium, so maybe my questions are already answered somewhere on the forum. I'd like to use Cesium for visualization of a large city, and I've got a big postgresql database of spatial objects (buildings, plots, etc). As far as I can tell, the best way to get the needed amount of data on the client is to stream it by "chunks" - 3D tiles, that cover only current visible map area. But how do I generate 3D tiles from postgres data? I want some 3D tiles to be pre-generated, and some to be generated on the fly (something similar to 2D tiling solutions like Tilecache, Mapproxy etc.) But regarding to this forum branch, the tools aren't implemented yet. Or are they already present in some unfinished development form?
So how did you make 3D tiles for NYC buildings? What was the initial form of this data and how did you translate it to 3D tiles?
What do you use on the server side to stream tiles to the client?
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I would like to learn and apply “3D tiles” . I read article about “Cesium-dev” and reviewed “3D Tiles.html” But I don’t know how to apply to my Project.
I am calling building data with codes that is written below but It takes time increase of buildings. Can you help me understable and clear way?
var viewer = new Cesium.Viewer('cesiumContainer', {
scene3DOnly : true,
shadows : true
});
var dataSource2 = new Cesium.GeoJsonDataSource();
var promise = dataSource2.load('../../Build/test-1.geojson');
promise.then(function(dataSource2) {
viewer.dataSources.add(dataSource2);
viewer.zoomTo(dataSource2);
var entities2 = dataSource2.entities.values;
var colorHash = {};
for (var i = 0; i < entities2.length; i++) {
var entity = entities2[i];
var name = entity.KAT_ADEDI;
var color = colorHash[name];
if (!color) {
color = Cesium.Color.GREEN;
colorHash[name] = color;
}
.
entity.polygon.material = color;
entity.polygon.outline = false;
entity.polygon.extrudedHeight = entity.properties.KAT_ADEDI;
}
}).otherwise(function(error){
window.alert(error);
});
Thank you in advance
Selahattin
--
You received this message because you are subscribed to a topic in the Google Groups "cesium-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/cesium-dev/tCCooBxpZFU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to cesium-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Right now I'm using the 3D Tiles branch of Cesium, and had a question regarding the properties of ModelInstanceCollection (https://github.com/AnalyticalGraphicsInc/cesium/blob/3d-tiles/Source/Scene/ModelInstanceCollection.js). The problem I'm running into is the need to add the Heightreference to the models used within this instance. I have tried doing so by just manually adding it within Cesium.Js (Unminified version) however got the error that the Heightreference is not supported without a scene (However, I add it as a primitive collection straight to the Viewer.Scene.Primitives).
Are there any plans to officially support HeightReference as of now or is it more beneficial to sample the terrain and generate a height-variable for my models?
My implementation within Cesium.js was very simple, I just added a this._heightReference variable to the constructor of ModelInstanceCollection and at the definition of the model added this again as a definition (using Cesium.HeightReference.CLAMP_TO_GROUND).
Additionally; I've been trying to instead use sampleTerrain to get the correct height. I'm getting it , but want to wait for the PrimitiveCollection of ModelInstanceCollection to be done before adding it to my primitives. The issue I was running into is the fact that the system seems to be running too fast and skipping over the Model Variable while trying to add, causing it to never actually load the model (the DebugBoundingSphere is visible and in the right place, there just aren't any models and logging it in the console shows the _model variable of ModelInstanceCollection to be undefined).
Right now, I'm trying to call on the ReadyPromise within ModelInstanceCollection. I logged it and can get the promise just fine. But the promise doesn't return properly and never shows it as being ready. Now I'm getting my model, but I can't add it to my primitives because the follow snippet never triggers.
var readyPrimitives = primitiveCollection.readyPromise;
Cesium.when(readyPrimitives, function(){
viewer.scene.primitives.add(primitiveCollection);
console.log("placed trees");
});
var readyPrimitives = viewer.scene.primitives.add(new Cesium.ModelInstanceCollection(......));
Cesium.when(readyPrimitives, function(){
console.log("placed trees");
});
The above code snippet also doesn't seem to work for me. Instead using a 5 second timer before adding the collection seems to work consistently, like in the following code:
primitiveCollection = self.placeTrees(updatedPositions); // This returns the ModelInstanceCollection to add later.
setTimeout(SpawnTrees, 5000);
function SpawnTrees(){
viewer.scene.primitives.add(primitiveCollection);
}
console.log(primitiveCollection);
What I tried to use, was your example in the following way:
primitiveCollection = viewer.scene.primitives.add(self.placeTrees(updatedPositions)); // self.placeTrees still returns the modelinstancecollection;
Cesium.when (primitiveCollection, function () {
console.log("trees have been placed");
});
This code snippet doesn't seem to run, none of the trees I am trying to place exist anymore and _model shows undefined, neither does "trees have been placed" get printed in the console.
I'm mostly getting issues where it simply isn't waiting for the model to exist before moving on and the Promise in _readyPromise of PrimitiveCollection never actually resolving. Waiting, for some reason, fixes this. For now I'll use this solution I have (albeit, that it is a bit of dirty code..)
Thanks for the help,
Heerco
This is unfortunately not the way I want to use this. I want to wait on the ModelInstanceCollection to give me the go-ahead from readyPromise before I add it to the primitives. I am having issues using this in the way you've posted because the _model variable ends up undefined, leaving me with a lack of trees, for some reason waiting those 5 seconds is what helps. I might look further into the readyPromise later.
Thanks again for the help
Right now, this is the current structure:
var promise = Cesium.sampleTerrain(self.terrainProvider, 11, locations);
Cesium.when(promise, function(updatedPositions) {
primitiveCollection = self.placeTrees(updatedPositions);
setTimeout(SpawnTrees, 5000);
function SpawnTrees(){
viewer.scene.primitives.add(primitiveCollection);
}
console.log(primitiveCollection);
});
where placeTrees runs this:
var scale = new Cesium.Cartesian3(1, 1, 1);
var treeInstances = [];
locations.forEach(function (location) {
var cartesianPosition = Cesium.Cartesian3.fromRadians(location.latitude, location.longitude, -location.height);
var modMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(cartesianPosition);
treeInstances.push({modelMatrix: modMatrix});
});
var primitives = new Cesium.ModelInstanceCollection({
instances: treeInstances,
url: "lib/pine-alpha.glb",
allowPicking: false,
boundingSphere: Cesium.BoundingSphere.fromEllipsoid(Cesium.Ellipsoid.WGS84),
shadowMode: Cesium.ShadowMode.DISABLED
});
return primitives;
(the shadowmode is something I added because the shadows are a MASSIVE resource hog and not needed in our usecase).
First off; I added the shadowmode under ModelInstanceCollection within Cesium itself as an option so I could edit it. I have also created a pullrequest with this change but this wasn't added to the branch. Nevertheless, it works and turns my framerate from 10 fps to 60 fps. I only need the shadows off on the trees, not on the rest of the objects within our scene. So it's specific usecase (and it's an option innate on the model, why isn't it able to be edited within the ModelInstanceCollection in the first place?).
Aside from that, the adapted example still doesn't function. It simply does not show the model. It refuses to "find" it and the readypromise never gets called, which has been the crux of the problem from the start. It doesn't seem to "ready" itself.
Right now, I'm running into a whole different problem. Namely that I call remove on the old ModelInstanceCollection (viewer.scene.primitives.remove(primitiveCollection)) and it crashes because it still attempts to update. It works fine if I give it time before I attempt to another modelInstanceCollection, but if it happens too quick it instantly crashes the renderer. While, if I console.log both the PrimitiveCollection within the scene (console.log(viewer.scene.primitives) - logs the whole primitive collection of the scene with 6 instances, 5 are used for other things and 1 modelinstancecollection) and the primitiveCollection itself (console.log(primitiveCollection.isDestroyed() - logs False nearly always) both show it's still there.
The Error :
An error occurred while rendering. Rendering has stopped.
DeveloperError: This object was destroyed, i.e., destroy() was called.
Error
at new DeveloperError (http://localhost:63342/lib/cesium-unminified/Cesium.js:1317:19)
at ModelInstanceCollection.throwOnDestroyed (http://localhost:63342/lib/cesium-unminified/Cesium.js:25397:19)
at PrimitiveCollection.update (http://localhost:63342/lib/cesium-unminified/Cesium.js:165306:27)
at updatePrimitives (http://localhost:63342/lib/cesium-unminified/Cesium.js:173562:27)
at executeCommandsInViewport (http://localhost:63342/lib/cesium-unminified/Cesium.js:173478:9)
at updateAndExecuteCommands (http://localhost:63342/lib/cesium-unminified/Cesium.js:173346:17)
at render (http://localhost:63342/lib/cesium-unminified/Cesium.js:173772:9)
at Scene.render (http://localhost:63342/lib/cesium-unminified/Cesium.js:173810:13)
at CesiumWidget.render (http://localhost:63342/lib/cesium-unminified/Cesium.js:182779:25)
at render (http://localhost:63342/lib/cesium-unminified/Cesium.js:182167:32)
OK
I'm deleting the old ModelInstanceCollection to save on performance and resources, because if I don't the frames dip with 10 for each collection I add. But, it's updating the old one while that should be removed and I create a new one a bit later.
also, regarding the Radians conversion, if I do not do the conversion as is shown in my cript, the trees will not be in the correct place.
fixed the current problem. That's where I did use the readyPromise to request for it's status, works fine now! Thanks for all the help.