小编Mai*_*tor的帖子

如何在WebGL上向顶点着色器发送多个参数?

我正在学习OpenGL教程(因为WebGL教程很少见),它使用以下语法来表示多个参数:

#version 330

layout (location = 0) in vec4 position;
layout (location = 1) in vec4 color;

smooth out vec4 theColor;

void main()
{
    gl_Position = position;
    theColor = color;
}
Run Code Online (Sandbox Code Playgroud)

layout (location = #)语法不适用于WebGL.这有什么替代品?

javascript opengl-es webgl opengl-es-2.0

4
推荐指数
1
解决办法
2501
查看次数

皮肤指数和皮肤权重是什么意思?

这是无证的,所以我在这里问。我正在尝试在 JavaScript 中为网格设置动画。我正在使用 Blender->Three.js 导出器,因为它很方便。我不能使用 Three.js 本身,因为我无法弄清楚如何解决它的某些问题(将带有动画网格的场景的法线和深度信息渲染到缓冲区)。那么,如何读取从 Blender 导出到 Three.js 的“skinIndices”和“skinWeights”属性?它们是什么意思,在计算动画顶点位置时它们的作用是什么?

"bones" : [
    {"parent":-1,"name":"pelvis","pos":[-3.52132e-08,0.0410043,0.880063],"rotq":[0,0,0,1]},
    {"parent":0,"name":"thigh.L","pos":[0.0878887,0.00522349,0.102822],"rotq":[0,0,0,1]},
    {"parent":1,"name":"shin.L","pos":[0.103679,0.00638392,-0.445744],"rotq":[0,0,0,1]},
    {"parent":2,"name":"foot.L","pos":[0.0655578,0.0194668,-0.418675],"rotq":[0,0,0,1]},
    {"parent":3,"name":"toe.L","pos":[0.0280578,-0.107185,-0.0704246],"rotq":[0,0,0,1]},
    {"parent":3,"name":"heel.L","pos":[3.58224e-05,0.036576,-0.0885088],"rotq":[0,0,0,1]},
    {"parent":0,"name":"thigh.R","pos":[-0.0878888,0.00522352,0.102822],"rotq":[0,0,0,1]},
    {"parent":6,"name":"shin.R","pos":[-0.103679,0.00638412,-0.445745],"rotq":[0,0,0,1]},
    {"parent":7,"name":"foot.R","pos":[-0.0655576,0.0194677,-0.418675],"rotq":[0,0,0,1]},
    {"parent":8,"name":"toe.R","pos":[-0.0280577,-0.107185,-0.0704248],"rotq":[0,0,0,1]},
    {"parent":8,"name":"heel.R","pos":[-3.57926e-05,0.036576,-0.0885083],"rotq":[0,0,0,1]},
    {"parent":0,"name":"stomach","pos":[5.37268e-09,-0.008465,0.121596],"rotq":[0,0,0,1]},
    {"parent":11,"name":"chest","pos":[1.94616e-08,0.0538289,0.269019],"rotq":[0,0,0,1]},
    {"parent":12,"name":"upper_arm.L","pos":[0.160045,-0.010388,0.159844],"rotq":[0,0,0,1]},
    {"parent":13,"name":"forearm.L","pos":[0.165089,0.0102809,-0.232678],"rotq":[0,0,0,1]},
    {"parent":14,"name":"hand.L","pos":[0.0980782,-0.0148839,-0.245313],"rotq":[0,0,0,1]},
    {"parent":15,"name":"index.L.001","pos":[0.019191,-0.040475,-0.0743723],"rotq":[0,0,0,1]},
    {"parent":16,"name":"index.L.002","pos":[-0.00562334,-0.00824448,-0.0310695],"rotq":[0,0,0,1]},
    {"parent":17,"name":"index.L.003","pos":[-0.00953785,-0.00126594,-0.0192741],"rotq":[0,0,0,1]},
    {"parent":15,"name":"middle.L.001","pos":[0.0191911,-0.0188201,-0.0769786],"rotq":[0,0,0,1]},
    {"parent":19,"name":"middle.L.002","pos":[0.00288424,-0.00695575,-0.0326532],"rotq":[0,0,0,1]},
    {"parent":20,"name":"middle.L.003","pos":[-0.0111618,-0.00550338,-0.0242877],"rotq":[0,0,0,1]},
    {"parent":15,"name":"ring.L.001","pos":[0.0186397,0.00194495,-0.0777299],"rotq":[0,0,0,1]},
    {"parent":22,"name":"ring.L.002","pos":[0.00393239,-0.00062982,-0.0309386],"rotq":[0,0,0,1]},
    {"parent":23,"name":"ring.L.003","pos":[-0.00873661,-0.00165674,-0.024165],"rotq":[0,0,0,1]},
    {"parent":15,"name":"pinky.L.001","pos":[0.0191911,0.02271,-0.0758559],"rotq":[0,0,0,1]},
    {"parent":25,"name":"pinky.L.002","pos":[-0.0057596,0.0014303,-0.0236881],"rotq":[0,0,0,1]},
    {"parent":26,"name":"pinky.L.003","pos":[-0.00877053,-0.0020119,-0.0195478],"rotq":[0,0,0,1]},
    {"parent":15,"name":"thumb.L.001","pos":[-0.0073517,-0.0318671,-0.0156776],"rotq":[0,0,0,1]},
    {"parent":28,"name":"thumb.L.002","pos":[-0.00941652,-0.0166059,-0.0179188],"rotq":[0,0,0,1]},
    {"parent":29,"name":"thumb.L.003","pos":[-0.0081799,-0.0129757,-0.0276645],"rotq":[0,0,0,1]},
    {"parent":12,"name":"upper_arm.R","pos":[-0.160044,-0.010388,0.159844],"rotq":[0,0,0,1]},
    {"parent":31,"name":"forearm.R","pos":[-0.165089,0.0102809,-0.232679],"rotq":[0,0,0,1]},
    {"parent":32,"name":"hand.R","pos":[-0.0980774,-0.0148839,-0.245313],"rotq":[0,0,0,1]},
    {"parent":33,"name":"index.R.001","pos":[-0.0185038,-0.0404748,-0.0743726],"rotq":[0,0,0,1]},
    {"parent":34,"name":"index.R.002","pos":[0.00562337,-0.00824449,-0.0310695],"rotq":[0,0,0,1]},
    {"parent":35,"name":"index.R.003","pos":[0.00953785,-0.00126596,-0.0192741],"rotq":[0,0,0,1]},
    {"parent":33,"name":"middle.R.001","pos":[-0.0185038,-0.0188199,-0.0769789],"rotq":[0,0,0,1]},
    {"parent":37,"name":"middle.R.002","pos":[-0.00288421,-0.00695577,-0.0326532],"rotq":[0,0,0,1]},
    {"parent":38,"name":"middle.R.003","pos":[0.0111619,-0.00550339,-0.0242877],"rotq":[0,0,0,1]},
    {"parent":33,"name":"ring.R.001","pos":[-0.0179525,0.00194514,-0.0777302],"rotq":[0,0,0,1]},
    {"parent":40,"name":"ring.R.002","pos":[-0.00393245,-0.000629827,-0.0309386],"rotq":[0,0,0,1]},
    {"parent":41,"name":"ring.R.003","pos":[0.00873658,-0.00165676,-0.024165],"rotq":[0,0,0,1]},
    {"parent":33,"name":"pinky.R.001","pos":[-0.0185039,0.0227101,-0.0758562],"rotq":[0,0,0,1]},
    {"parent":43,"name":"pinky.R.002","pos":[0.0057596,0.00143027,-0.0236881],"rotq":[0,0,0,1]},
    {"parent":44,"name":"pinky.R.003","pos":[0.00877053,-0.00201192,-0.0195478],"rotq":[0,0,0,1]},
    {"parent":33,"name":"thumb.R.001","pos":[0.00803882,-0.0318669,-0.0156779],"rotq":[0,0,0,1]},
    {"parent":46,"name":"thumb.R.002","pos":[0.00941664,-0.0166059,-0.0179188],"rotq":[0,0,0,1]},
    {"parent":47,"name":"thumb.R.003","pos":[0.00817987,-0.0129757,-0.0276645],"rotq":[0,0,0,1]},
    {"parent":12,"name":"neck","pos":[1.6885e-08,-0.0164749,0.225555],"rotq":[0,0,0,1]},
    {"parent":49,"name":"head","pos":[0.000806741,-0.0273245,0.0637051],"rotq":[0,0,0,1]}],

"skinIndices" : [
        11,0,11,0,1,11,11,0,0,11,0,11,1,11,1,11,0,11,11,0,11,0,11,0,1,11,11,0,11,0,0,11,1,11,1,11,0,11,0,11,0,11,12,0,0,11,0,11,
        0,11,12,0,12,0,11,0,11,0,11,0,12,0,11,0,11,0,11,0,12,0,12,11,11,0,11,0,12,13,11,0,0,11,11,0,12,13,12,13,0,11,12,13,12,0,
        12,0,13,12,13,12,12,13,12,0,12,13,13,12,12,13,12,13,13,12,13,0,12,13,12,0,12,13,13,0,12,0,13,0,0,13,13,0,13,0,0,13,0,13,
        13,0,13,0,0,13,13,12,13,12,13,12,13,0,13,0,13,0,13,12,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,
        (... too big)]

"skinWeights" : [
    0.454566,0.443267,0.456435,0.4405,0.568642,0.331477,0.452697,0.446034,0.600277,0.577654,0.603738,0.578153,0.557686,0.334716,
    0.579597,0.328238,0.596817,0.577156,0.481496,0.447683,0.604872,0.59171,0.466162,0.448242,0.567426,0.35812,0.49683,0.447124, …
Run Code Online (Sandbox Code Playgroud)

blender three.js

4
推荐指数
1
解决办法
1570
查看次数

如何使用按位运算符交错2个布尔值?

假设我有两个4位值,ABCD并且abcd.如何AaBbCcDd使用按位运算符进行交错呢?伪C中的示例:

nibble a = 0b1001;
nibble b = 0b1100;
char c = foo(a,b);
print_bits(c); 
// output: 0b11010010
Run Code Online (Sandbox Code Playgroud)

注意:4位仅用于说明,我想用两个32位整数执行此操作.

c bit-manipulation bitwise-operators

4
推荐指数
1
解决办法
383
查看次数

为什么这个Haskell数组填充操作如此之慢?

对于特定的任务,我需要在可变数组中进行大量快速的单独写入.为了检查性能,我使用了以下测试:

size :: Int
size = 256*256*16

arr :: UArray Int Int
arr = runST $ do
    arr <- newArray (0,size) 0 :: ST s (STUArray s Int Int)
    forM_ [0..size] $ \i -> do
        writeArray arr i i 
    unsafeFreeze arr

arr_sum = foldl' (\ sum i -> sum + (arr ! i)) 0 [0..size-1]

main = print arr_sum
Run Code Online (Sandbox Code Playgroud)

结果如下:

vh:haskell apple1$ ghc -O3 bench.hs -o bench; time ./bench
Linking bench ...
549755289600

real    0m0.748s
user    0m0.697s
sys 0m0.048s
Run Code Online (Sandbox Code Playgroud)

我怀疑它不应该花0.7秒来填充内存上的256*256*16数组,所以我在JavaScript中测试了一个等效的程序: …

performance haskell

4
推荐指数
1
解决办法
180
查看次数

对于简单的代码,类型约束变得巨大且难以理解

请注意以下代码:

-- A n-dimensional axis aligned bounding box.
data AABB v a = AABB {
    aabbMin :: !(v a), 
    aabbMax :: !(v a)
    } deriving (Show)

-- `v` is a container, representing the number of dimensions. Ex:
-- type Box2DFloat = AABB V2 Float
-- type Box4DFloat = AABB V4 Float 

-- A n-dimensional ray.
data Ray v a = Ray {
    rayPos :: !(v a),
    rayDir :: !(v a)
    } deriving (Show)

-- Traces a n-d ray through a …
Run Code Online (Sandbox Code Playgroud)

haskell design-patterns typeclass data-structures

4
推荐指数
1
解决办法
194
查看次数

你如何以递归方式实现"show"?

Haskell show通常以递归方式实现:

data Tree = Node Tree Tree | Leaf

show' (Node left right) = "(Node " ++ show' left ++ " " ++ show' right ++ ")"
show' Leaf              = "Leaf"

main = putStrLn $ show' (Node (Node Leaf Leaf) Leaf)
Run Code Online (Sandbox Code Playgroud)

如何show使用尾递归实现?

haskell tail-recursion

4
推荐指数
1
解决办法
122
查看次数

如何为通用向量创建ListIsomorphic实例?

鉴于以下课程:

class ListIsomorphic l where
    toList   :: l a -> [a]
    fromList :: [a] -> l a
Run Code Online (Sandbox Code Playgroud)

如何使用Data.Vector.Generic?为矢量类型编写实例?这不起作用:

instance (V.Vector v a) => ListIsomorphic v where
    toList   = V.toList
    fromList = V.fromList
Run Code Online (Sandbox Code Playgroud)

给我:

test.hs:31:10:
    Variable ‘a’ occurs more often than in the instance head
      in the constraint: V.Vector v a
    (Use UndecidableInstances to permit this)
    In the instance declaration for ‘ListIsomorphic v’
Run Code Online (Sandbox Code Playgroud)

haskell typeclass ghc-generics

4
推荐指数
2
解决办法
82
查看次数

你如何在功能上完全压缩二维网格?

例如,使用列表拉链,可以遍历一维空间.是否有任何类似的优雅和有效的方式来编码通过二维网格行走(没有模式)的概念?

grid haskell zipper data-structures

4
推荐指数
1
解决办法
163
查看次数

访问不同端口托管的WebSocket服务器时出现混合内容错误

我已经在端口80(http)和443(https)上设置了express服务器node.js。与该服务器分开,我在单独的端口中设置了一个websocket服务器8000

var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({port: 8000});
Run Code Online (Sandbox Code Playgroud)

Express服务的站点必须连接到那些服务才能正常工作。问题是:通过http可以正常访问我的网站,但是从https,我得到了:

index.js:100 Mixed Content: The page at 'https://example.com/' was 
loaded over HTTPS,  but attempted to connect to the insecure 
WebSocket endpoint 'ws://my_sites_ip:8000/'. This request has been 
blocked; this endpoint must be available over WSS.
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误?这与websocket服务器与http服务器位于不同的进程/端口中有关吗?我如何使它工作?

ssl https certificate websocket node.js

4
推荐指数
1
解决办法
1万
查看次数

这种语法是否与表示法一样具有表现力?

do标记允许我们表达单子代码没有压倒嵌套,使

main = getLine >>= \ a -> 
       getLine >>= \ b ->
       putStrLn (a ++ b)
Run Code Online (Sandbox Code Playgroud)

可以表达为

main = do
  a <- getLine
  b <- getLine
  putStrLn (a ++ b)
Run Code Online (Sandbox Code Playgroud)

但是,假设语法允许... #expression ...代表do { x <- expression; return (... x ...) }.例如,foo = f a #(b 1) c将被贬低为:foo = do { x <- b 1; return (f a x c) }.上面的代码可以表示为:

main = let a = #getLine in
       let …
Run Code Online (Sandbox Code Playgroud)

syntax haskell do-notation

4
推荐指数
1
解决办法
174
查看次数