问题标签 [glscene]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
387 浏览

delphi - 如何缩放以使场景中的 3D 点适合屏幕?

我将我的 3D 点(许多点)存储在一个TGLPoints对象中。场景中除了点之外没有其他对象。绘制点时,我想让它们适合屏幕,这样它们就不会看起来太远或太近。我试过TGLCamera.ZoomAll但没有成功,这里给出的解决方案是调整相机位置、景深和场景比例:

这次这些点没有出现在屏幕上。

我应该怎么做才能使 3D 点适合屏幕?

0 投票
0 回答
81 浏览

delphi - 为什么 glscene imposter 没有完全渲染而是被截断了?

我希望有人能帮帮忙。我用 Delphi GLScene 创建了一个冒名顶替者,但似乎冒名顶替者没有完全渲染,而是被切断了。冒名顶替者在所附图像的右侧,3D 模型在左侧。有趣的是,当我创建茶壶的冒名顶替者时,一切都按预期工作。似乎对于某些模型我有这个问题,而对于其他模型我没有。车是一个TGLFreeForm。在将模型加载到之前,我已经玩过相机位置、相机的景深和比例,TGLFreeForm但无济于事。有谁知道我该如何解决这个问题?

您可以使用该TGLStaticImposterBuilder组件制作 3d 模型的冒名顶替者。如果模型是预先从不同的摄像机角度生成的,那么就是几张图像。不是渲染 3D 模型,而是在渲染时显示最适合的图像。这大大提高了性能,但会消耗更多内存。

有缺陷的冒名顶替者

0 投票
0 回答
41 浏览

delphi - 如何使 GLPlane 始终具有前置摄像头方向(Delphi,GLScene)

我有一个带有通过鼠标事件旋转的相机的 GLScene

我需要 GPPlane1 始终面向相机

0 投票
0 回答
15 浏览

windows-10 - 我正在尝试将 W7 Delphi10.4 升级到新的 W10 Pc 10.4.2 - 有问题

看不到示例 DFM,并遇到各种运行时错误我确实尝试过 cleanrelease.bat,并将路径设置为按照 10.4,但示例有时会构建/运行(例如 Archipelago)但无法显示 .DFM 文件

我猜 _VCL 可以使用重建,但无法理解如何做到这一点。任何建议都将受到欢迎。

(ps 我是一个很老的人,但在 4o 多年前就和 PDP11 的背发生过争执..)

0 投票
2 回答
149 浏览

delphi - 如何阻止 GLScene GLSceneViewer 组件使 Delphi 10.3 IDE 崩溃?

我正在将现有的 GLScene 应用程序更新到 Delphi 10.3。我已经安装了最新的 GLScene(来自https://sourceforge.net/projects/glscene/),但 TGLSceneViewer 组件导致错误。

即使在一个新项目中,当我将 TGLSceneViewer 放在表单上时,我也会收到 Loadlibrary failed with error 126;

在此处输入图像描述

按“确定”,Delphi 崩溃回到 Windows 桌面;它会在没有任何对话框或错误的情况下杀死 IDE。(如您所见,已放置的 TGLScene 组件 GLScene1 不会出错。)

我已经使用 ProcessMonitor 试图找到问题(按照对 LoadLibrary 126 错误的响应的指示);

在此处输入图像描述

所以错误似乎缺少“d.DLL”。那一定是一个无效的 dll 名称,所以有一些安装问题吗?

有没有人遇到过这个问题?谢谢!

更新:

因此,我挖掘了 GLScene 源代码,试图找到可能与“d.DLL”相关的引用。

在下面的屏幕截图中(“消息”部分),在 CUDA_Runtime.pas 和 CUDA.FourierTransform.pas 中引用了构造的 dll 名称(CUDARTDLLNAMES[I] + '.dll' 和 CUFFTDLLNAMES[I] + '.dll')。有可能这些可以创建名称“d.DLL”,除了“DLL”在代码中没有大写?!我只是在这里寻找解决方案。

同样有趣的是,文件“Imports.Newton.pas”指的是安装外部文件夹中不包含的四个 dll 文件;newton32 d .dll、newton32 s .dll、newton64 d .dll 和 newton64 s .dll

同样,我不知道这是否与 TGLSceneViewer 在设计模式下成功加载有关。

在此处输入图像描述

再次感谢您的帮助。

0 投票
0 回答
30 浏览

delphi - 使用 Delphi GLScene 进行 GLSL 光线投射

我使用 GLScene Texture3D 演示的修改版本,探索使用 GLScene 的着色器。我可以让着色器工作,但不能让光线投射算法(单程)工作。在 FormCreate 中,指定了一个单位立方体:

该项目使用 GLScene 的 TGLDirectOpenGL:

  • 颜色是从纹理中读取并通过着色器应用的,工作正常。因此,将 3D 纹理传递给着色器是可行的。
  • 通过着色器进行光线投射的选项:立方体绘图工作,光线投射不起作用。

顶点着色器,用于切片和光线投射:

用于切片的片段着色器,工作正常:

对于通过片段着色器进行的光线投射,我使用了来自 OpenGl Development Cookbook 的示例 glsl 代码,可以在github上找到:

在修改后的 GLScene Texture3D 演示中可以看到(完整的 Delphi 项目可以在这里下载),切片可以工作,光线投射不行。由于切片确实可以正常工作,我希望问题出在着色器代码中,或者在发送到着色器的制服中。

我尝试了几个选项(主要是相机定位),但没有任何效果。

欢迎提出想法/建议。

问候,罗纳德