Aframe自动缩放和自动定心加载模型

时间:2018-03-28 05:03:49

标签: three.js aframe

我一直在努力创建一个应用程序,从谷歌聚合物中获取模型并将它们放在iframe中的场景中。

最初的问题是模型太大或太小,所以aframe社区向我建议了一种最佳方式,这种方法在一段时间内工作正常但在缩放和旋转时发生了错误。

这是我用来确保模型正确缩放的组件。

library(shiny)
library(plotly)

ui <- fluidPage(
    fluidRow(column(width = 6,
                    br(),
                    plotlyOutput("plot")),
             column(width = 6,
                    br(), br(),
                    htmlOutput("xlims"),
                    br(),
                    h4("Verbatim plotly `relayout` data"),
                    verbatimTextOutput("relayout")))
)

server <- function(input, output, session) {
    # create the plotly time series
  output$plot <- renderPlotly({
      today <- Sys.Date()
      tm <- seq(0, 600, by = 10)
      x <- today - tm
      y <- rnorm(length(x))
      p <- plot_ly(x = ~x, y = ~y, mode = 'lines', 
                   text = paste(tm, "days from today"), source = "source")
  })

  # print the xlims
  output$xlims <- renderText({
      zoom <- event_data("plotly_relayout", "source")
      # if plot just rendered, event_data is NULL
      # if user double clicks for autozoom, then zoom$xaxis.autorange is TRUE
      # if user resizes page, then zoom$width is pixels of plot width
      if(is.null(zoom) || names(zoom[1]) %in% c("xaxis.autorange", "width")) {
          xlim <- "default of plot"
      } else {
          xmin <- zoom$`xaxis.range[0]`
          xmax <- zoom$`xaxis.range[1]`
          xlim <- paste0("Min: ", xmin, "<br>Max: ", xmax)
      }
      paste0("<h4>X-Axis Limits:</h4> ", xlim)
  })

  # print the verbatim event_data for plotly_relayout
  output$relayout <- renderPrint({event_data("plotly_relayout", "source")})
}

shinyApp(ui, server)

上述方法存在两个问题:

  • 当我从这样的属性值缩放模型时:scale =&#34; 2 10 2&#34;如果一个太大,框架检查员显示的中心就会混乱。
  • 当我使用属性值旋转模型时,枢轴关闭。我尝试设置旋转但没有运气。

上述代码将对任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我想也许你想用你想要的转换顺序构建转换矩阵(可能是缩放然后旋转然后位置或什么?)。 THREE.js: Can you force a different order of operations for three.js?