【问题标题】:OpenSeadragon Dynamic ImageOpenSeadragon 动态图像
【发布时间】:2023-03-30 18:36:01
【问题描述】:

我想为 OpenSeadragon 创建一个 tilesource,以渲染玩家的游戏视图。 世界有坐标 (x,y),玩家在一个特定的坐标上,有一个视野范围。

我想要为 OpenSeadragon 创建一个 tilesource,它可以显示整个视图。在最大缩放时,1 个图块 = 1 个坐标。 所以我有几个问题: 如何计算玩家视野范围的最大缩放级别? 我如何知道我必须在 OpenSeadragon (x, y, level) 请求的图块中渲染的世界位置?

谢谢:)

【问题讨论】:

  • 游戏画面会随着时间而改变吗?您是否希望用户仅限于看板的一部分?
  • 图形会随着时间的推移而改变,但它不在玩家的浏览器上(现在还没有,可能要很久以后)。现在它只是一个生成的静态位图(就像我生成一个玩家视图的大位图)。
  • 玩家将只能看到自己的视线,这可以改变。 (但如果是这样,它会触发视图刷新)

标签: javascript deepzoom openseadragon


【解决方案1】:

如果我理解正确,您正在尝试创建一个自定义 TileSource,您可以在其中从构成游戏地图构建块的一组标准图块中加载。如果需要,您可以指定最大级别是它尝试加载的唯一级别(通过使 minLevel 和 maxLevel 相同),因此您不必处理生成图块组合。这使getTileUrl(level, x, y) 变得容易,因为您只需要处理 1:1 层。这就留下了最高水平是多少的问题。定义在:

http://openseadragon.github.io/docs/OpenSeadragon.TileSource.html

...公式为:

默认情况下,图像金字塔分为 N 层,其中图像最长边为 M(以像素为单位),其中 N 是满足 2^(N+1) >= M 的最小整数。

基本上,您只是在计算 2 的幂,直到获得图像的大小。因此,如果您的图像一侧为 1 个像素,则您的最大级别为 0。如果一侧为 2 个像素,您的最大级别为 1、4 = 2、8 = 3 等。

假设您的 tileSize 为 100 像素,地图为 5x7 的图块。这意味着最长的维度是 700 像素。看 2 的幂,700 大于 512 小于 1024,所以我们使用 1024。1024 是 2 的 10 次方,所以你的最高等级是 10。

这能回答你的问题吗?

【讨论】:

  • 是的,确实如此。对于缩放级别,没关系。 1:1 层是一种解决方案,但我想生成所有层。使用大小的计算算法(每个缩放级别* 2),我想我可以制作一个可以获取所有内容并为 Seadragon 绘制最终图块的函数。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-08
  • 2022-11-19
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
相关资源
最近更新 更多