首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Three.js从WebGLRenderTarget (water )检索数据

Three.js从WebGLRenderTarget (water )检索数据
EN

Stack Overflow用户
提问于 2013-08-10 17:06:54
回答 1查看 5.7K关注 0票数 8

我正试图将这个(http://madebyevan.com/webgl-water/‎)移植到三个。我想我离得越来越近了(只是想要现在的模拟,还不关心焦散/折射)。我想让它的GPU提升与着色器工作。

下面是我目前使用着色器进行的三种设置:http://jsfiddle.net/EqLL9/2/ (第二个较小的平面用于调试当前WebGLRenderTarget中的内容)

我正在挣扎的是从WebGLRenderTarget (在我的例子中是rtTexture)中读取数据。在这个例子中,你会看到围绕中心点的4个顶点向上移动。这是正确的(经过一个模拟步骤),因为它开始于中心点是唯一的位移点。

如果我能够从rtTexture中读取数据并更新每个帧的数据纹理(buf1),那么模拟就应该有适当的动画。如何直接从WebGLRenderTarget读取数据?所有示例演示如何向目标发送数据(呈现给目标),而不是从中读取数据。还是我做错了?有东西告诉我,我将不得不与多种纹理工作,并以某种方式来回交换,类似于埃文是如何做到的。

TL;DR:在这样的调用之后,如何将数据从WebGLRenderTarget复制到DataTexture:

代码语言:javascript
运行
AI代码解释
复制
  `// render to rtTexture`
代码语言:javascript
运行
AI代码解释
复制
 `renderer.render( sceneRTT, cameraRTT, rtTexture, true );` 

编辑:可能已经找到解决方案在jsfiddle /gero3/UyGD8 8/9/将调查和报告。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-11 11:22:44

好的,我知道了如何使用本地webgl调用读取数据:

代码语言:javascript
运行
AI代码解释
复制
// Render first scene into texture
renderer.render( sceneRTT, cameraRTT, rtTexture, true );

// read render texture into buffer
var gl = renderer.getContext();
gl.readPixels( 0, 0, simRes, simRes, gl.RGBA, gl.UNSIGNED_BYTE, buf1.image.data );
buf1.needsUpdate = true;

模拟现在有动画了。然而,它似乎没有正常工作(可能是我忽略的一个愚蠢错误)。似乎高度值从来没有受到影响,我不知道为什么。来自buf1的数据用于片段着色器,它计算新的高度(在RGBA中为红色),阻尼值(乘以0.99),然后将其呈现为纹理。然后,我将更新后的数据从纹理中读取回buf1。

以下是最新的小提琴:http://jsfiddle.net/EqLL9/3/

随着我的进步,我会不断更新这一点。

编辑:现在效果很好。刚刚实现了法线,现在致力于环境反射和折射(同样纯粹通过着色)。http://relicweb.com/webgl/rt.html

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18167797

复制
相关文章
three.js中帧缓存的使用
在网上查阅了一下three.js关于帧缓存的使用,感觉很多都是关于three.js中后处理通道的使用的。后处理通道确实使用FBO实现的,但其实我就是想获取某个时刻的渲染结果作为纹理,没必要在动态渲染中进行后处理。真正实现这个功能的是WebGLRenderTarget这个类,这是一个渲染目标的缓冲区,可以装载到WebGLRenderer中进行渲染,再从WebGLRenderTarget获取纹理对象。
charlee44
2020/06/22
4.3K0
从0到1快速了解ElasticSearch数据检索
这篇文章主要讨论一下ElasticSearch数据检索内部流程,方便大家对数据检索的理解。如果对ElasticSearch的文档写入不了解的同学可以先看一下上一篇文章【从0到1了解ElasticSearch文档写入】。
爱拼才会赢
2021/10/21
1.3K0
第2-3课 检索数据检索列检索排序数据
这两课主要介绍sql中利用select语句对数据的简单检索。 下面分别讨论不同类型的检索
desperate633
2018/08/22
7530
基于内容的图像检索技术:从特征到检索
构建词库是离线操作,主要对目标数据集中的文本进行解析提取词干信息,建立当前数据集的词库,然后基于词库,对数据集中所有文档提取本文特征。构建词库在整个检索系统生命周期开始阶段实施,一般情况仅执行一次,是针对目标检索文本数据集进行的非频繁性操作。
公众号机器学习与AI生成创作
2020/12/08
1.7K0
基于内容的图像检索技术:从特征到检索
Pour Water
思路: 模拟,每次drop一滴水,接着从左边开始找坑,坑的定义如下,存在j,使得a[j] < a[j + 1] && a[j - 1] > a[j] , 找到j则填坑,找不到就从右边开始找坑,找到填坑,找不到填位置K。
用户1147447
2019/05/26
4160
Leetcode Container With Most Water
Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
2018/09/04
5170
Leetcode Container With Most Water
Elasticsearch如何检索数据
我们都知道Elasticsearch是一个全文检索引擎,那么它是如何实现快速的检索呢? 传统的数据库给每个字段都存储成一个单个值,对于全文检索而言,这样的存储是低效的。举个例子,我有一个大文本字段,存到数据库里面只能是一个值,如果想要检索这个大文本字段里面的任何一个词,数据库如何实现? 只能通过like模糊查询来实现,先不说性能低,这对于一个搜索引擎是远远不够的。 针对上面数据库的不足,所以才出现了Lucene这种全文检索框架而它的核心就在于采用了倒排索引(Inverted Index)的数据结构,不同于数
我是攻城师
2018/05/15
1.1K0
全文检索数据挖掘
全文检索(Full-text Search):先建立索引,再对索引进行搜索的过程,搜索结果为匹配文本
sofu456
2019/07/09
7840
Leetcode 42 Trapping Rain Water
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining. For example,  Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6. image.png The above elevation map is repr
triplebee
2018/01/12
4750
Leetcode 42 Trapping Rain Water
11. Container With Most Water
给定n个非负整数\(a_1,a_2,...,a_n\),其中每个数表示坐标点\((i,a_i)\),i是数组下标,\(a_i\)是对应高度.寻找两条线,使得两条线构成的长方形面积最大,盛水最多.
用户1631856
2018/12/27
3790
leetcode 11 Container With Most Water
class Solution { public: int maxArea(vector<int>& height) { int res = 0, i = 0, j = height.size() - 1; while (i < j) { int h = min(height[i], height[j]); res = max(res, h * (j - i)); while (i < j &&
@坤的
2018/06/04
3010
Leetcode 11 Container With Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container,
triplebee
2018/01/12
4890
用three.js渲染上海外滩模型
天空的实现有多种方式,最常见的是一个包围全部的天空球,通常是UV球,也叫经纬球,其UV很方便映射到一张天空图片,比如:
Jean
2021/07/16
3.6K0
【LeetCode】【Python解读】Container with most water
这个问题是芭芭拉在采访中遇到的,不幸的是,的复杂性O(n2)该,太失望了,难怪没有通过面试。
全栈程序员站长
2022/07/05
2450
[Leetcode][python]Trapping Rain Water/接雨水
参考:http://www.cnblogs.com/zuoyuan/p/3781453.html
蛮三刀酱
2019/03/26
6740
【CV实践】图像检索从入门到进阶
简介:阿水,Datawhale成员,北京航空航天大学硕士,多次获得国内外数据竞赛TOP名次
Datawhale
2020/04/15
9040
【CV实践】图像检索从入门到进阶
Three.js教程(1):初识three.js
今天开始我们进入一个新的世界,那就是3D世界。由于我自己也是刚接触到这块内容,所以如果文章中有问题,请尽快在文章最后的留言板中请指出。本教程有配套代码仓库,请点击https://github.com/KaiOrange/three.js-demo。
kai666666
2020/10/19
23.5K0
Three.js教程(1):初识three.js
three.js
阿谀奉承而无所图的人极少;爱奉承的话,就免不了要付出代价——佚名 一个js的3D库 git仓库:https://github.com/mrdoob/three.js 官网:https://threejs.org/ 其中包含了很多案例 甚至有用它做游戏:
阿超
2022/09/29
13.4K0
three.js
Water Surface Lamp 灯光小装置
好久没有更新了,放假了终于可以玩些好玩的东西了,今天带来一个灯光小装置。在SVA就读的方方老师创作的Water Surface Lamp,是一个能发出波浪效果的氛围灯,在instructables.com上这篇教程获得了近九千的点击量。
UDM Lab
2021/04/22
9660
Water Surface Lamp 灯光小装置
Leetcode: Container With Most Water
题目: Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
卡尔曼和玻尔兹曼谁曼
2019/01/22
4360

相似问题

THREE.js:从THREE.WebGLRenderTarget获取数据

31

CocoonJS + Three.js webGLRenderTarget静默死亡

14

Three.js -渲染WebGLRenderTarget纹理最有效的方法是什么?

10

重用WebGLRenderTarget

121

Three.js r84 - EffectComposer:不能重复使用WebGLRenderTarget.texture

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档