안드로이드의 이미지에 구형 필터를 적용해야하므로 입력 및 예상 출력 이미지가 첨부되어 있습니다. 출력 이미지는 입력 이미지의 중심에있는 제곱 영역에서 처리되어 구형으로 매핑됩니다. 안드로이드에서 어떻게하는지 모든 아이디어. 이 작업을 수행하기 위해 OpenGL을 사용해야하거나 2D-trasformation만으로 작업을 수행 할 수 있습니까? 안드로이드의 구형 필터
답변
구형을 만들고 구체 및 배경 생성을 조정하기 위해 다음과 같은 코드 Fish Eye lens을 수정하면 대개 정사각형 이미지에 사용할 수 있습니다.
이
http://www1.cs.columbia.edu/CAVE/publications/pdfs/Garg_TR04.pdf
나는 팀에 동의합니다. 하나의 비트 맵을 다른 비트 맵으로 변환하는 데는 3d 포인트가 필요하지 않으며 Ray-trace도 필요하지 않습니다. 간단히 말해서 2 차원입니다. OpenGL에 무언가가 내장되어 있는지 모르겠지만 올바른 방향으로 당신을 가리 키기에 충분한 3D 경험이 있습니다. 당신이 선택한 * circle 영역 안의 모든 점들을 반복해야합니다 * 이것은 단서이며 FISH-EYE 변환을 사용하여 색상을 찾습니다. 당신은 그물에 충분히 있어요. 도움이 되길 바란다
그 사람의 그림은 정반사, 굴절, 물/유리 등의 원형 고리를 보여줍니다. Brad Larson이 제공하는 링크 (위대한 링크 +1)를 보면, 순환 경계에서 이미지 자체로 부드럽게 전환됩니다. 이것은 사용자가 요구하는 것이 아니라 효과입니다. 위의 이미지가 실제로 무엇을 찾고 있다면 조금 더 단순한 셰이더 유형 함수보다 조금 더 복잡 할 수 있습니다. 그러나 그들의 해석에 대해 묻는 사람에게서 많은 단어를 되찾지 않고 있었느냐? ??? – trumpetlicks
난 그냥 iOS에서의 OpenGL ES 2.0을 사용하여 작업이 구현있어 :
이 iOS에서 동안을, 내가 사용하는 프레 그먼트 쉐이더는 바로 안드로이드를 통해 가져올 수 있습니다. 상기 radius
는 정규화 반경 인 -
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform highp vec2 center;
uniform highp float radius;
uniform highp float aspectRatio;
uniform highp float refractiveIndex;
void main()
{
highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio));
highp float distanceFromCenter = distance(center, textureCoordinateToUse);
lowp float checkForPresenceWithinSphere = step(distanceFromCenter, radius);
distanceFromCenter = distanceFromCenter/radius;
highp float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter);
highp vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth));
highp vec3 refractedVector = refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex);
gl_FragColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5) * checkForPresenceWithinSphere;
}
center
는 정규화는 (두 차원 1.0 0.0 공간에서)이 구의 중심 좌표이다 구면 굴절 부는 다음 단편 쉐이더를 이용하여 달성된다 refractiveIndex
은 구의 공기/재료 지수이고 aspectRatio
은 이미지의 종횡비입니다 (구가 둥글고 정규화 된 좌표 공간에서 타원이 아닌지 확인하기 위해).
제공된 중심 및 반지름을 사용하여 구의 표면 법선을 계산하고 GLSL refract()
함수를 사용하여 들어오는 벡터를 굴절시키고 이미지 텍스처에서 검색 좌표를 제공합니다.
this answer에 설명 된 분리 가능한 가우시안 블러를 사용하여 배경이 흐려집니다.
이 필터는 iPhone에서 실시간으로 라이브 비디오를 필터링하기에 충분히 빠르므로 대부분의 Android 장치에서 성능이 상당히 좋아야합니다. 이 소스 코드는 오픈 소스 GPUImage 프레임 워크의 GPUImageSphereRefractionFilter에서 찾을 수 있습니다.
OpenGL에서이 코드를 사용했는데 완벽하게 작동했습니다. 그러나 나는 수학을 이해하는 데 어려움을 겪고있다. y textureCoordinateToUse를 계산하는 동안 aspectRatio가 곱해진 이유를 이해하지만 왜 나머지 계산이 필요합니까? – tanvi
- 1. 안드로이드의 구형 표현 방법
- 2. 구형 Mac에서 개발
- 3. 구형 iOS 버전 지원
- 4. 구형 원통 투영
- 5. 구형 정점 연결하기 OpenGL
- 6. 구형 패치의 계산 표면적
- 7. 레이 트레이싱 구형 텍스처
- 8. OpenGL ES에서 구형 그리기
- 9. 상자 대 구형 충돌
- 10. 구형 좌표에서 회전 몸체
- 11. Cg 쉐이더에서 구형 텍스처링하기
- 12. 빠른 구형 교차점
- 13. 360도 구형 파노라마
- 14. Mathematica의 구형 좌표계
- 15. 아이폰의 OpenGL ES에서 구형 텍스쳐링
- 16. 구형 메르카토르 점을 찾는 방법
- 17. Direct x로 구형 메쉬 만들기?
- 18. 구형 PHP 스크립트의 구문 오류
- 19. 3D 소프트웨어에서 "구형"파노라마 생성
- 20. 구형 레일 버전의 기본 범위
- 21. 모델에 LibNoise 구형 이미지 투영
- 22. 부드러운 그림자를위한 구형 영역 광원
- 23. 인 텐트 필터 in
- 24. 필터 대 -ms- 필터
- 25. 에덴 공간 및 구형 공간 활용률 100 %
- 26. 구형 브라우저 용 ECMAScript 5 호환 스크립트
- 27. 구형 브라우저가 좋지 않은 PNG, iepngfix가 필요하십니까?
- 28. Java/Python 용 구형 지오메트리 라이브러리
- 29. 구형/신형 iOS 장치의 조각화 탐색하기
- 30. iPhone 5 앱이 구형 iPhone에서 어떻게 작동합니까?
배경이 텍스처 일 경우 필연적으로 어려운 raytracing 문제라고 생각하지 않습니다. 일종의 구형 좌표계 또는 큐브 맵을 사용하여 텍스처를 구에 매핑 할 수 있습니다. 그가 역동적 인 3D 장면을 반영했다면 나는 당신과 동의 하겠지만 텍스처를 반영하는 것만으로는 그리 어렵지 않습니다. – Tim
비 광선 추적 예제는 내가 제공 한 문서가 (임 꽤 확실하다) !!! 배경을 텍스처로 사용해도이를 수행하는 또 다른 방법은 여전히 레이 트레이싱을 사용할 수 있습니다. – trumpetlicks
"OpenGL은 ray 기반 3D를 제공하지 않습니다."- 셰이더를 사용할 때 가장 확실하게 할 수 있습니다.저는 OpenGL ES 2.0 쉐이더를 사용하여 이것에 가까운 왜곡을했습니다 : http://stackoverflow.com/a/9896856/19679 그리고 GLSL은 객체를 통한 빛 굴절을위한'refract()'함수를 정의합니다. 이 특정 효과를 복제하는 셰이더를 만들 수 있는지 보겠습니다. –