home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / sci / virtual / 2568 < prev    next >
Encoding:
Text File  |  1992-07-25  |  22.7 KB  |  544 lines

  1. Newsgroups: sci.virtual-worlds
  2. Path: sparky!uunet!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!destroyer!ubc-cs!uw-beaver!news.u.washington.edu!milton.u.washington.edu!hlab
  3. From: dlwood@mailbox.syr.edu (David L Wood)
  4. Subject: Re: TECH: My standard is better than your standard.
  5. Message-ID: <1992Jul26.075108.9516@u.washington.edu>
  6. Originator: hlab@milton.u.washington.edu
  7. Sender: news@u.washington.edu (USENET News System)
  8. Organization: University of Washington
  9. References: <1992Jul19.055422.12836@u.washington.edu>
  10. Date: Sun, 26 Jul 1992 05:24:43 GMT
  11. Approved: cyberoid@milton.u.washington.edu
  12. Lines: 530
  13.  
  14.  
  15.  
  16. In article <1992Jul19.055422.12836@u.washington.edu> Jeremy Lee <s047@sand.sics.
  17. bu.oz.au> writes:
  18. >
  19. >
  20. >In article <BrHr16.Mvq@watserv1.waterloo.edu> Bernie writes:
  21. >
  22. >>In article <1992Jul15.233601.6824@u.washington.edu> bobp@hal.com (Bob
  23. >>Pendelton) writes:
  24. >>
  25. >>>>  How do
  26. >>>>  we subdivide space into more manageable chunks (to avoid having to keep
  27. >>>>  the entire universe's database in memory on every machine)?
  28. >>>Oct-trees look good.
  29. >>
  30. >>Well, perhaps; but they're not terribly efficient.  (I'll see I can
  31. >>get Dave (Stampe) to post his thoughts on this).
  32. >
  33. >I've got an answer to this. See my report. Objects themselves decide
  34. >which other objects to talk to. Objects naturally form a group that
  35. >talk almost exclusivley to each other, and that, to all intents and
  36. >purposes, is the same as a "world"
  37. >
  38.  
  39. Original question- how do we make the universe more compact or easier to
  40. deal with on clients' machines?
  41.  
  42. If the universe is defined by a message router and what that message router
  43. tells you about your surrounding area, then the idea (presented by someone
  44. whose name I cannot recall) that the message router should only inform you
  45. (the client) of the existence of an object only if it occupies one or more
  46. pixels after being projected with perspective shrinkage.  For objects very
  47. far away, fewer details are visible on the client's display software, and
  48. for this reason it seems logical to:
  49.   
  50.  store in the machine's memory only the geometry and attributes (and 
  51.  ...behavior?) of those objects that contribute to a pixel or more after
  52.  perspective projection.  
  53.  
  54.  If you want to shape the object definition around this, a tree of
  55.  primitives (possibly similar to CSG) sorted with largest primitives
  56.  at the top and smallest primitives at the bottom would allow for
  57.  slow machines to discard the unnecessary details and faster machines
  58.  to use the whole data structure for very nice pictures.  In the router's
  59.  point of view, it only has to pass those levels of the object tree that
  60.  would contribute significantly to a viewer's display, and ignore those
  61.  that aren't visible because of size.
  62.  
  63. >>>Imagine a library world. [...]
  64. >>>Only objects with a high enough security level that are members of the right
  65. >>>classes can access restricted data.
  66. >>>It would make sense that the god of that world would filter messages
  67. >>>so that objects that you can't access can't even be seen by you.
  68. >>
  69. >>I suspect that this sort of thing is best handled by the object
  70. >>itself.  If I create a virtual book, it's up to me (the creator and
  71. >>proprietor of the book's contents) to decide who should read it.  (If
  72. >>I sell the book, I sell control of its attributes and behaviour as
  73. >>well).
  74. >>
  75. >>If an object is to be invisible to certain other objects, it simply
  76. >>doesn't acknowledge messages from that object (including messages like
  77. >>"what do you look like" or "what is your location").
  78. >
  79. >Heyyyy! We think alike. I came up with exactly the same thing last
  80. >night.. Each object is responsible for only itself.
  81.  
  82. I'll respond to the idea of message requests like  "What do you look like?"
  83. later on.
  84.  
  85. >
  86. >>God should have nothing to do with it; god is a security hole.
  87. >
  88. >>I think distance is perhaps one of the criteria for whose messages I
  89. >>get, but it shouldn't be the only one.  Perhaps size over distance,
  90. >>giving apparent size; anything too small and/or too far way doesn't
  91. >>matter.  That would solve the problems of the sun, moon and clouds,
  92. >>aircraft, etc.
  93. >>
  94. >>However, I still have to worry about all the stuff in the office next
  95. >>to mine.
  96. >
  97. >Probably the best way to deal with this is to use a system where if an
  98. >object doesn't get seen for one frame, then the chance of even
  99. >attempting to render it for the next frame goes down. You hit a lower
  100. >limit, and say, for nine frames out of ten the renderer doesn't even
  101. >look at it. If on that one go in ten it is suddely seen again, then
  102. >the priority goes right back up and an attempt is made to render it
  103. >every frame. Of course, it depends where you set your limits, but in
  104. >this case, then when you actually end up looking at it, it will appear
  105. >within ten frames, or 1/3 of a second in some systems. Short enough
  106. >for you not to notice. It will take that long for it to move in from
  107. >your peripheral vision.
  108.  
  109. I don't know about you, but objects flickering in and out in my peripheral
  110. vision would be a bit distracting! :)  But, clipping is best handled by the
  111. renderer, not the message router.
  112.  
  113.  
  114. >
  115. >>>This all leads to the idea of a world and it's god being defined by a
  116. >>>message router.
  117. >>
  118. >>Yes.
  119. >
  120. >No. "worlds" per se don't exist in my model. Only objects do. If a
  121. >group of objects decide to assosciate, then you can call that
  122. >assosciation a "world", but it still doesn't really exists. Message
  123. >routers should be completely transparent, and should have no bearing
  124. >on the objects.
  125.  
  126. Well, a superset of YOUR model includes _your_ objects as well as a new term:
  127. worlds.  I really like the idea of a message router controlling the passing
  128. of messages between objects in a world.
  129.  
  130. >
  131. >>>Put a time stamp on each message sent by each object. 
  132. >>
  133. >>That means we have to "synchronize watches" across the network; that's
  134. >>probably okay, but...
  135. >>
  136. >>>Process messages in time stamp order.
  137. >>
  138. >>I would say an object should respond to messages *in the order they
  139. >>arrive* without regard to timestamps.  People with slow network
  140. >>connections don't have as much control over the universe; that's life.
  141. >>The alternative is to deliberately introduce delta-delays on every
  142. >>single interaction, which would make the world unusable.  (Cascading
  143. >>interactions would be even worse, since you'd have to use longer
  144. >>deltas).
  145. >
  146. >I agree. It's easier to put the messages in a queue, with timestamp
  147. >attached. If the object want to pay attention to the timestamp, then
  148. >that is their business.
  149. >
  150. >The universe itself throus causuality out the window on occasions
  151. >anyway, so why worry about that?
  152. >
  153.  
  154. No need to synchronize watches.  The messages are processed by the router,
  155. which stamps the messages with its own time.  One thing to remember in a 
  156. networked environment is that the clients should never be trusted to
  157. perform any task that you can do yourself (where "you" is the server).
  158.  
  159.  
  160. >>>For some types of applications causality violations can just be
  161. >>>ignored. For others you must be able to "rewind" time and play back
  162. >>>all the events in their correct order so that history happens
  163. >>>correctly.
  164. >>
  165. >>Yikes!  That strikes me as a very complicated task, especially since
  166. >>some interactions will depend on others.  And from a user standpoint,
  167. >>watching an object I picked up suddenly and inexplicably jump from my
  168. >>hand down to the floor next to the table would be *very*
  169. >>disconcerting.
  170. >
  171. >You can't rewind it. It's a non-deterministic system.
  172. >
  173.  
  174. Well, all we'd really need is a virtual camera which stores all the messages
  175. received by your client and then you can take this message list, along with
  176. the object descriptions and recreate the event however you like, offline
  177. if you want.
  178.  
  179.  
  180. >>>>  What should our unit of time measurement be?
  181. >>>The second.
  182. >>>>  What precision should it have?
  183. >>>Time would appear to need arbitrary precision and need to be scalable.
  184. >>
  185. >>Well, maybe.
  186. >>
  187. >>We still need to have some notion of a "tick time".  If we were to
  188. >>adopt the timestamps you described, the timestamp would have to be in
  189. >>some kind of time units and have some number of bits of precision.
  190. >>
  191. >>>I expect that every dimension in VR will need arbirary precision and
  192. >>>need to be scalable.
  193. >>
  194. >>I'm not sure that's practical, but I think further discussion is
  195. >>needed.
  196. >
  197. >You can't really scale time. It's just not practical. the system will
  198. >run at the speed it wants. You can't make it go faster, although I
  199. >suppose you can make it go slower.
  200. >
  201.  
  202. If you have a system of objects whose behavior depends on the time variable,
  203. you could certainly scale THEIR time, slowing down your virtual model
  204. railroad or speeding up your virtual ocean tides.  Your personal time,
  205. as recorded by the message router is unrelated.  You can't slow down another
  206. client's time, or the time of the entire network (legitimately) since
  207. this would upset people; I'd be!
  208.  
  209.  
  210. >I personally like the idea of 128 bit numbers to describe spatial
  211. >co-ordinates. If you scale 32 bit numbers, then you are going to get
  212. >just as large a speed decreace through calculations, and you have the
  213. >extra hassles of making sure that everyone is using the same scale
  214. >factors. And what if an object just won't fit in the current world
  215. >scale?
  216. >
  217.  
  218. Define floors, not ceilings.  128 bits is not enough.  You could use
  219. a system of variable length coordinates.  An id byte would indicate
  220. how many bits (or bytes, take your choice) are used to locate a
  221. coordinate.  Really, anything to extend the ability of the protocol
  222. is better than putting a limit like 16 bytes.  I'll admit 16 bytes is
  223. fairly hefty, but if you want to dump an entire universe into a file
  224. that contains every object at a particular instant (universe snap-shot),
  225. then 128 bits isn't going to cut it.
  226.  
  227.  
  228. >>>>  How do we ensure that a given color looks the same to
  229. >>>>  everyone?  Does this even matter?
  230. >>>Yes, it matters very much. Take a look at Xcms in the X11R5 release.
  231. >>
  232. >>I guess what I meant was more like "you see the color blue one way, I
  233. >>see it in another, but we both agree it's blue and that it's darker
  234. >>(or lighter) than another shade of blue; does the actual color really
  235. >>matter?)"
  236. >
  237. >Irrelevant.
  238.  
  239. Color:  RGB is fairly standard, converting it to other forms isn't that
  240. complicated.  For transmission about a network, RGB is fine.
  241.  
  242.  
  243. >>>>  How do we represent and share surface textures?
  244. >
  245. >Doesn't matter. Each object does it the way it wants. (See my paper)
  246.  
  247. Hmm, textures-  that's a serious question.  Flat polygons won't live 
  248. for long with all the developments in microprocessor power.  Current 
  249. raytracers depends on geometric primitives and splines, parametric
  250. equations, and other patches (ala bezier).  To create textures, sometimes
  251. external images are "wrapped" around those primitives, or a primitive
  252. is 'added' to a surface function (as in adding a noise function to
  253. make a bumpy surface).  For use in networked systems, they probably
  254. won't be too pleasant for bandwidth considerations. :)
  255.  
  256.  
  257. >>>The people I know who really know 3D graphics tell me that mip-maps are
  258. >>>the way to go...
  259. >>
  260. >>I'll see if I can find a reference... anybody out there got any pointers?
  261. >
  262. >Nope, but I'd like some.
  263.  
  264. In Computer Graphics: Principles and Practice (2nd edition, by Foley, Van Dam,
  265. Feiner, and Hughes), on page 826- 
  266.   
  267.   Basically- a MIP map is a copy of the original image into three sections
  268. of RGB in the upper left upper right and lower left corner boxes of a rectangle
  269. that is divided into four equal sections.  These three boxes are the unfiltered
  270. source image.  The lower right box is again subdivided equally.  In this
  271. box however, the original images are reduced (i.e. filtered) by a factor of
  272. FOUR (4).  And the lower right hand box of this set of images is again divided
  273. into four boxes and so on until you have only four pixels which represent the
  274. cumulative filtering of the image.  The source image from this MIP map is
  275. then used as a look-up table for those pixels which are a certain distance away
  276. and so on.  Compared to the straight-forward method of taking a pixel on the
  277. screen and filtering all the pixels that land on it in a projection of the
  278. source image, this is lots faster.  Interpolation is used between "layers"
  279. to help smooth out the reduction.  
  280.  
  281.   This is really not terribly related to surfaces, it is projection of 
  282. images, which won't make a flat polygon any bumpier.
  283.  
  284.  
  285. >>>Extensiblity is a requirement for any protocol.
  286. >>
  287. >>Agreed!!!
  288. >
  289. >Of course.
  290.  
  291. Who am I to disagree?
  292.  
  293.  
  294. [ junk deleted ]
  295.  
  296.  
  297. >>That's true.  However, adding bandwidth is easier than adding
  298. >>processing power; you just add more physical connections and multiplex
  299. >>the traffic over them.  (True, you can go to an extensible
  300. >>multiprocessor architecture, but that's still more complex than
  301. >>increasing bandwidth).
  302. >
  303. >Look at the bandwith increaces that are just around the corner, when
  304. >people really begin using optic fibre. Currently it's trunk line only.
  305. >What happens when you have the equivelant of a trunk line leading into
  306. >your PC? 
  307.  
  308. Don't build a protocol based on promises of better technology.
  309.  
  310.   
  311. >>>I like the idea of structuring it more like an air traffic control
  312. >>>system. You have a bunch of routing centers (called routers) that
  313. >>>control the propagation of messages. Each world has at least one
  314. >>>router. But, a world can be made up of multiple routers that each
  315. >>>handle specific regions of the world. It only gets messy at the
  316. >>>boundries between regions. The collection of all communicating routers
  317. >>>is called a universe.
  318. >>
  319. >>This sounds very, very good to me.
  320. >
  321. >Routing and all network stuff should be trasnparent and should have no
  322. >bearing on what constitutes a world. In that sentence, you are basically
  323. >saying that objects are restricted to worlds in close physical
  324. >proximity, and I therefore wouldn't be able to connect to a world that's
  325. >in Tokyo, for example.
  326.  
  327. Nonononooo!  If you want to go to tokyo's domain, and hence use tokyo's
  328. router, you can instruct your current router to transfer all messages from
  329. you to the tokyo router and to allow messages from the tokyo router
  330. to be sent back to you!  Simplicity!
  331.  
  332.  
  333. >>>Routers aren't tied to specific iron. For small worlds multiple
  334. >>>routers can run on a single machine. For big worlds you may need
  335. >>>multiple very large machines.
  336. >>
  337. >>Yes.
  338. >
  339. >Sounds like your routers are central controllers, and I thought we all
  340. >agreed that they just won't be able to cope.
  341.  
  342. Honestly, how much CPU time is burned up by sorting out messages and
  343. occassionally computing a size over distance function? Not much.
  344.  
  345.  
  346. >>>I think that objects will need to send out position change messages
  347. >>>when they move. And they'll need to send out "here I am this is what I
  348. >>>look like and this is what I do" sorts of messages to anyone they want
  349. >>>to interact with. I think that we will want to move the visual
  350. >>>information and at least some of it's behavioural information to
  351. >>>individual viewing stations. Rendering across a network hard to do in
  352. >>>real time.
  353. >>
  354. >>Right.
  355. >
  356. >Not nesessarily. Depends what you mean.
  357.  
  358. Never trust a client to handle something that could be misused. Also,
  359. imagine you're on a slow machine, I mean SLOW! You run in wireframe mode,
  360. and your tiny 2400 baud modem can barely keep up with message flow.  
  361. (I'm not this deprived, but imagine those who are.)  Suddenly you are
  362. surmounted witha thousand requests from one source (an enemy) of a
  363. fully detailed object description!  Thousands of K that would bog you
  364. down like a fly on flypaper. Of course you could put some restrictions on
  365. frequency of requests and such, but honestly, the router should handle
  366. this.  Any slight variation in the course of my virtual airplane would have to
  367. be transmitted to the whole network who I am visible to, which is fine if
  368. the router included it in its round of messages to a client, but if I had to
  369. send out these messages myself, the strain would be horrific.
  370. You NEED a central control by definition of DOMAIN.
  371.  
  372.  
  373. >>>But managing the data flow in a highly populated world is going to be tough.
  374. >>
  375. >>Yes -- it's probably the main "unanswered question" that (so far) no
  376. >>one's put forward a good solution for.
  377. >
  378. >You can't, and you don't need to. Any system is going to be able to be
  379. >swamped by too many objects. But, by the time it gets that big, then
  380. >most people will be leaving anyway, because it's so congested.
  381.  
  382. Speculation, also pessimism.  Is that what created the internet?
  383.  
  384.  
  385. >>>So, what are the hardware requirements for a "VR station" or "deck"
  386. >>>that can deal with this protocol?
  387. >>
  388. >>This is going to be controversial.  Do we insist on HMDs?  Do we set
  389. >>frames/second thresholds?  Do we have a "standard world" for
  390. >>benchmarking?  What about input devices?
  391. >
  392. >See my paper.
  393.  
  394. What paper, and where?
  395.  
  396.  
  397. >>>        How slow a machine do you want to target?
  398. >>>        How little RAM are you willing to target?
  399. >>
  400. >>These are both difficult numbers to wrestle with.  They're dependent
  401. >>on how you store the data; if you're representing things with CSG, you
  402. >>don't need nearly as much ram as if you're using polygons... and if
  403. >>you're using voxels, you need even more.
  404. >
  405. >See my paper.
  406.  
  407. Speed of the machine and RAM requirements are really NOT elements of the
  408. protocol, they are elements of IMPLEMENTING the protocol.  If someone
  409. can write the protocol and renderer and all with a meager 2 megs of ram,
  410. then why should the protocol care?  If the particular tricks and techniques
  411. of a particular implementation can allow a slow machine to keep up with
  412. network messages, why make it suffer?
  413.  
  414.  
  415. >>Same with processor speed; you need more MIPS if you're dealing with
  416. >>CSG than if you're just doing polys or wireframe.
  417. >
  418. >See my paper.
  419.  
  420. The choice of polygon/wireframe/stereo viewing/ et cetera... is up to
  421. the client, the protocol doesn't decide that. It shouldn't!  Imagine having
  422. to send whole raytraced images over a network!  :) 
  423.  
  424.  
  425. >>I don't think we can set specific numbers; if we support multiple object
  426. >>resolutions (and representations) then we should be able to accomodate
  427. >>a wide range of machines.
  428. >
  429. >See my paper. (This is getting monotonous!)
  430.  
  431. yep.
  432.  
  433.  
  434. >>>        Do you assume access to a large secondary storage device?
  435. >>
  436. >>Again, it depends on how you do things; in general, I'd say "yes" (so
  437. >>you can do local caching of object attributes).
  438. >
  439. >Doesn't matter.
  440. >
  441. >>>     What does input from a generic input device look like in the protocol?
  442. >>
  443. >>Very good question.  A more basic one is "what do we mean by a
  444. >>'generic input device'"?
  445. >>
  446. >>>        How do I substitute a dial box or a mouse for a data glove?
  447. >>
  448. >>Dave Stampe and I are looking at this very question for our REND386
  449. >>stuff.  (No, we haven't really answered it yet).
  450. >
  451. >Just change the object. Re-write a few internal processes, keep the same
  452. >interface with the rest of it.
  453. >
  454. >>>How many channels? What capabilites? Will a Disney Sound Source do?
  455. >>
  456. >>Stereo, certainly; in terms of where the sound gets processed... I
  457. >>would say in the user's station, which means we need to move a *lot*
  458. >>of sound data over the network.
  459. >
  460. >Not necessarily. See my paper.
  461. >
  462. >>>In my view of what is being discussed, there are at least three
  463. >>>different hardware configurations to worry about. There is the
  464. >>>hardware that objects run on. There is the hardware that worlds run on
  465. >>>(a world is message router). And the viewing station that people use
  466. >>>to interact with worlds.
  467. >>
  468. >>Right.
  469. >
  470. >Nope. Chuck the message routers, because they are simply another
  471. >bottleneck. They are not needed. Since the viewing station is also
  472. >running objects, then you are just left with one type of machine.
  473. >
  474. >>>All three of these things can run on a single computer. But I expect
  475. >>>that they will be mapped onto workstation/PC machines for viewing
  476. >>>stations, and servers for message routing and for running non-person
  477. >>>objects.
  478. >
  479. >No, what will happen is that objects just get shared. Rendering bits
  480. >will get put on the viewing station etc.
  481. >
  482. >>Right.  A workstation or PC is the most likely viewing platform.
  483. >>What's not as clear is what the viewing mechanism will be; a monitor,
  484. >>shutter glasses, head-mounted display...?  Also input devices... 3D
  485. >>mouse, glove, datasuit?
  486. >
  487. >Doesn't matter.
  488. >
  489. >>I suspect Unix boxes will be popular for implementing regions and
  490. >>objects.
  491. >
  492. >All machines will have to implement objects.
  493. >
  494. >>Anyway, thanks for all the good ideas...
  495. >> 
  496. >>-- 
  497. >>        Bernie Roehl, University of Waterloo Electrical Engineering Dept
  498. >>        Mail: broehl@sunee.waterloo.edu OR broehl@sunee.UWaterloo.ca
  499. >>        BangPath: uunet!watmath!sunee!broehl
  500. >>        Voice:  (519) 885-1211 x 2607 [work]
  501. >
  502. >So, where is this vaunted paper that I keep talking about? I'll post the
  503. >text after this, but can someone tell me where to send the .ps file?
  504. >(aw, stuff it. I'll just post it. No doubt the moderators will do what
  505. >is correct with it.)
  506. >
  507. >***********************************************************************
  508. >*    . Jeremy Lee s047@sand.sics.bu.oz.au    Student of Everything    *
  509. >*   /|            "Where the naked spotless intelect is without       *
  510. >*  /_|              center or circumference. Look to the light,       *
  511. >* /  |rchimedes      Leland, look to the light" - Dale Cooper         *
  512. >***********************************************************************
  513.  
  514. Comments on input devices:  If the input device is "attached" to a virtual
  515. object, then the behavior of the object must be defined as changes in the
  516. input from that real-world peripheral.  Selections between types of behavior
  517. for a single input device will allow a user to define the mouse as being
  518. either X,Y and 2 buttons to control rotation, or X,Y and 2 buttons to control
  519. Z motion, or whatever the user wants.  I think my point here is to make
  520. a one-to-one connection to a virtual object's range of motion (its behavior)
  521. and the input device that controls it.  In this way all the input device
  522. processing is done locally, and only the IMPORTANT information, the end
  523. result of the input is transmitted to the network.  You would have to
  524. "link" a dataglove to a virtual glove by defining the primitives or
  525. equations (formula for a hand anyone?) and where they can rotate about
  526. an axis, where they can be translated about, and for each of these range
  527. of motions in the virtual world, you would then of course have to calibrate
  528. your input device so that you get the degree of motion that you like. 
  529. A digitized hand, a 3d bitmap is, at present, too wide of a bandwidth to
  530. be useful in a network. (IMHO, that is)  And sending raw data like 
  531. 3d coordinates across a network would be suicide.  I'd like to see the
  532. input devices kept INDEPENDENT of the protocol and any network overhead.
  533. End results should have smaller bandwidth, and more easily computed in
  534. real-time than raw output.  I propose no general input device supported
  535. by the protocol, only behavior or "puppet-strings" control of virtual
  536. counterparts.
  537.  
  538. Yeah, it's late.
  539. --
  540. +-----------------------------+-----------------------------------------+
  541. | dlwood@mailbox.syr.edu      | drive on a parkway, park on a driveway  |
  542. | Cybernaut, with a thought.  |      Choosy netters choose GIF.         |
  543. +-----------------------------+-----------------------------------------+
  544.