Do it right how exactly? Oculus doesn't manufacture the hardware in question. Oculus is very much at the mercy of the smartphone display market. The only thing Oculus/Carmack can do is convince Samsung, and unless the change can impact the smartphone display market, Samsung is highly unlikely to be interested.
Unless you are suggesting Oculus get into the display manufacturing business? That's certainly interesting, but would probably add several years to their release timeline.
About 1 billion smartphones shipped in 2013. $2 billion stops excuses for a lot of things, but this isn't one of them. Oculus will absolutely have to make due with the screens being made for phones.
The reason you don't see realistic models very often is because objects we use as for reference (planets) are too tiny compared to the space between them. Earth would be nothing more than a speck of dust in a football sized model.
That said, here's a model with proper proportions of distance: http://www.solarsystemscope.com/ - Flash required, click anywhere, click on the gear icon to the left to select realistic size and model. Zoom slider is to the right. Note, the sizes and colors are wrong, most planets would be pretty much invisible in a realistic model.
Too bad they show all those stars in the background. So its a bit hard to say what is what. But it looks like the sun and the planets are quite visible. But are the proportions really correct? It looks like the sun is not much bigger then the plantes.
(1) Correct proportions of the distances between objects (namely the planets, planetoids, and the Sun), and
(2) the correct proportions of the objects themselves.
I'm one of the authors of the Prosody XMPP server, and a member of the XMPP software foundation. Prosody operators have been reporting this for more than a week now.
Google users have apparently been flooded with subscription requests from spammers, and the flooding suddenly became massive. The problem is, there are a large number of jabber servers out there which have open account registration without captchas. Most jabber server software doesn't come with a captcha module included by default, and of course, most admins don't bother changing defaults, even while running a public server with open registration.
Unlike some other comments here, I don't think Google has any malicious intent in this. This seems like a stop-gap measure, while they figure out and implement a proper solution.
As to the proper solution, the XMPP community is largely moving towards having captchas, or other forms of verification, and there are a number of proposed standards.
The thing to understand here is that the XMPP community has historically not had a spam problem. Due to the nature of the protocol, spoofing wasn't possible from the start, and there were no large lists of JIDs for spammers to abuse, so things worked out fine for a decade despite a lack of captchas. The good news is that the XSF was already preemptively working on the spam problem, and the speed with which XMPP specs (XEPs) get defined, implemented and deployed in servers and clients is far faster than any other large scale open protocol that I'm aware of.
Nice! To be fair to the Flash version, it appears to be using the 2D drawing API (equivalent to HTML5 canvas). If the Flash version used Stage3D, performance would probably be equivalent to WebGL for this demo, since most of the work would be offloaded to the GPU.
It is indeed a shortcoming of OpenFire; one that won't be fixed [1].
As far as the XMPP protocol is concerned, the concept of sub-domains doesn't matter. It's useful for human users when configuring servers though.
Prosody for example allows running a multi-user chat service on example.com. And there's an undocumented feature which let's you have user@example.com be a user, and room@example.com be a chatroom.
Fully detecting a scene's lighting is a complex problem. This paper from last year was quite interesting: "Rendering Synthetic Objects into Legacy Photographs" - http://kevinkarsch.com/publications/sa11.html
This combined with existing techniques of constructing 3D geometry out of videos could work really well if say you wish to construct a game level out of a real scene.
Raytracing complex scenes on a hand-held device at interactive frame rates is still quite a bit off. But techniques where a lot of the calculations can be done offline are possible to use today (radiosity, etc).
Well, since we are nitpicking nitpicks, allow me to nitpick your nitpick of a nitpick: Lua closures are also composite data structures. You can get/set their upvalues via the debug API. Behold:
function create()
local a,b,c,d,e,f,g,h,i,j;
return function() print(a,b,c,d,e,f,g,h,i,j); end
end
function array_get(f, index)
local k,v = debug.getupvalue(f, index);
return v;
end
function array_set(f, index, value)
debug.setupvalue(f, index, value);
end
function map_get(f, key)
for i=1,math.huge do
local k,v = debug.getupvalue(f, i);
if k == key then return v; end
if k == nil then return nil; end
end
end
function map_set(f, key, value)
for i=1,math.huge do
local k,v = debug.getupvalue(f, i);
if k == nil then return; end
if k == key then
debug.setupvalue(f, i, value);
return;
end
end
end
function test()
local f = create();
array_set(f, 1, "one")
assert(array_get(f, 1) == "one");
map_set(f, "b", "something");
assert(map_get(f, "b") == "something");
print("Success!")
end
test();
If table creation was disallowed, you could use functions in place of tables. And you could repurpose an existing table as the function type's metatable, allowing syntax like func.x=func[y]
Oh, and coroutines probably also fall under composite data structures technically...
Very well played! If I were the nitpick-y type ;) I'd wonder whether use of the debug library is kosher (esp. in production code), but you are definitely correct. Though, actually, this again correlates very closely with C/Scheme -- You can use an offset from a stack frame pointer to access stack variables in a function scope in C; and upvalues are just closed-over variables a la Scheme closures.
Actually, that's another point in Lua's favor. The mechanism Lua uses for managing closed-over variables is WAY more elegant than, for example, Ruby's mechanism...
Because of the lexical scoping rules, local variables can
be freely accessed by functions defined inside their scope.
A local variable used by an inner function is called an
upvalue, or external local variable, inside the inner
function.
i.e., the external local variables the closure is closed on. And for C functions made available to Lua scripts:
When a C function is created, it is possible to associate
some values with it, thus creating a C closure (see
lua_pushcclosure); these values are called upvalues and are
accessible to the function whenever it is called.