11.11.09

???????????? ?? 3D ?????? ???????????x ? FLARToolkit

original post: http://gasubasu.com/2009/11/11/%d1%81%d0%bf%d0%b5%d1%86%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-3d-%d0%bc%d0%be%d0%b4%d0%b5%d0%bb%d0%b8-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d1%83%d0%b5%d0%bc%d1%8bx-%d0%b2/



Спецификация на 3D модели

используемые в flash AR проектах






Ограничение по количесву треугольников




  • Общее колличество  видимых треугольных граней не должно превышать 5 000 шт.


  • Предел еффективной работы (без тормозов) 3 000 шт.
    И это не означает что нужно стремиться сделать модель под 3 000 треугольников!
    Их количество должно быть максимально минималым!





Ограничение по форматам граней




  • Все грани должны быть треугольными


  • Модель не должна содержать мелких граней, т.е. <10% от среднего размера грани


  • Грани не должны находится очень близко, т.к.  Z сортировка во флеше - ужас




Ограничение по материалам / текстурам




  • Материалы должны быть элементарными, однотекстурными


  • Материалы могут / должны иметь прозрачность



  • Альфа канал материала / текстуры должен быть в той же текстуре


  • Соответственно предпочтительный формат текстуры PNG (с 24 бит/цвет)



  • Очень желательно чтобы все развертки моделей находились в одной текстуре


  • Освещение модели и тени должны быть отрендерены в текстуры моделей



  • Все материалы / текстуры должны быть внятно поименованы латиницей без пробелов




Общие ограничения по модели




  • Модель должна быть низкополигональной!
    То есть:
    А. на плоскую грань не большe 2 треугольников,
    Б. На дугу в 90 градусов не больше 3 рёбер,
    В. Детали <10% от размера модели должны быть в текстуре, а не в сетке;




  • Модель не должна содержать полигонов которые никогда не будут видны в данной сцене


  • Все сложные / плавные грани должны быть в техтурах а не в геометерии, т.е. если нужно разместить текст, то это нужно делать с помощью текстур, а не экструдить сплайны (см. ограничение по колличеству полигонов)


  • Иерархия модели должна быть одноуровневой и не содержать групп

    (особенно если объекты анимируются)


  • Все объекты сцены должны быть внятно поименованы латиницей без пробелов


  • Модель и её элементы не должна содержать деформаций scale. Все деформации должны проводится над сеткой, а не над моделью.

    Совет: при моделинге отключайте smooth граней и подсветку сцены,
    т.к ни того ни другого не будет при конечной визуализации!




Ограничения по анимации




  • Объекты не должны содержать "вложенной" / иерархичной анимации а также анимации групп объектов. Вся анимация должна быть в координатном пространстве сцены.




Форматы файлов

  • Исходники модели нужно сопровождать экспортированной 3DS или OBJ версией,
    т.к. у программистов не всегда под руками есть нужный 3D пакет нужной версии
    (экспорт моделeй в код ведётся как правило через Blender)

Пример как можно, но не нужно делать

В целом это хорошие модели и вполне пригодны для визуализаци с помощью flash.
Но они они совершенно не экономичны, т.е. их нельзя назвать низкополигональными:



????? ???????????????? / [???????] Google Go = Python ? C++

original post: http://ping.fm/SmCiE

http://habrahabr.ru

copyrights ©
This article was cross–posted by an robot from a google reader's shared RSS podcast.
If this post violate your copyrights – please leave a comment, after it this post will be removed.
The post in any case refers to it's author and has at least two links to the original site.
Besides it, if the post longest than 2,000 chars it will automaticaly croped.

In any case please visit the aouthor's site
Google только что объявил выпуск нового языка с открытым исходным кодом

под названием Go. Компания говорит что, Go эксперементальный язык и

он объединяет производительность и безопасность компилируемых языков(как С++)

со скорость разработки динамических языков (как Python).

[ by mihailt ]

50 Stunning Video Game Concept Art

original post: http://ping.fm/796kc

http://ping.fm/7PQKK

copyrights ©
This article was cross–posted by an robot from a google reader's shared RSS podcast.
If this post violate your copyrights – please leave a comment, after it this post will be removed.
The post in any case refers to it's author and has at least two links to the original site.
Besides it, if the post longest than 2,000 chars it will automaticaly croped.

In any case please visit the aouthor's site

Video games can be a great source of design inspiration; they’re the ultimate mash-up of visual goodness and entertainment. Making concept art requires a high skill level with image creation software such as Photoshop and 3D animation applications such as Maya, as well as a very creative mind. In this massive collection, you’ll see variety of stunning video game concept art by talented digital artists for games such as Unreal Tournament, Grand Theft Auto IV, Assassin’s Creed, Half Life, and much more.


Section 8


Section 8



By Alessando Baldasseroni


SEGA’s VIKING


SEGA's VIKING


By Michael Kutsche


Starcraft: Protoss Hero


Starcraft: Protoss Hero


By ProlificPen


Dawn of War


Dawn of War

... Post was cuted right there, please read the original source!

[ by Jacob Gube ]

10.11.09

Keepon 2

original post: http://ping.fm/1qxX5

7.11.09

The Neighborhood Will Never Be the Same

original post: http://ping.fm/oxWb7

http://cuteoverload.com

copyrights ©
This article was cross–posted by an robot from a google reader's shared RSS podcast.
If this post violate your copyrights – please leave a comment, after it this post will be removed.
The post in any case refers to it's author and has at least two links to the original site.
Besides it, if the post longest than 2,000 chars it will automaticaly croped.

In any case please visit the aouthor's site

Willard and Wanda Worrywart were, perhaps predictably, two nervous nellies to be begin with. Willard often compulsively paced in circles, while Wanda fretted over the smallest disruptions.


The sky is falling! The sky is falling!


But in recent days, the Worrywarts often found themselves on the verge of suffering full-blown panic attacks. Their mental states were deteriorating, and Willard was especially affected.


I know I'm not a big prayer, Cod, but if you could help me, I'd appreciate it.


It was their new neighbor; he was bizarre, and frankly, terrifying. It was like living in an episode of the Twilight Zone.


When googly eyes aren't cute.


They had no one to complain to, so they were forced to endure the daily harassment. Neither Willard nor Wanda knew how long they’d last. But they knew one thing for certain: When they woke up, he would be there.


Call me Brimley and prepare to die.


Call some therapists, Vicki C. and Regina C.


Posted in Uncategorized Tagged: Danger, Fishes, I'm Going To Eat You, Impending Doom

[ by Prongs ]

You?re Trick-or-Treating in That?!

original post: http://ping.fm/yzP49

http://cuteoverload.com

copyrights ©
This article was cross–posted by an robot from a google reader's shared RSS podcast.
If this post violate your copyrights – please leave a comment, after it this post will be removed.
The post in any case refers to it's author and has at least two links to the original site.
Besides it, if the post longest than 2,000 chars it will automaticaly croped.

In any case please visit the aouthor's site

Pffthht — er, I mean, it’s very, um, distinctive. I especially like the way the silver lamé tutu complements the spaceman helmet.  And the corrugated-tin epaulets with the pink satin trim make a very, um, interesting statement.


DSC_0003


So you run along, get lotsa candy, etc.  You’ll be back early, I assume. (snort, pffht!)


DSC_0005


Evil never looked so garsh-darned adorable, Eden B.


Posted in Uncategorized Tagged: Kittens

[ by Not That Mike The Other Mike ]

AS3 Basic Parsing JSON question

original post: http://ping.fm/vbE9n

http://ping.fm/wzcD6

copyrights ©
This article was cross–posted by an robot from a google reader's shared RSS podcast.
If this post violate your copyrights – please leave a comment, after it this post will be removed.
The post in any case refers to it's author and has at least two links to the original site.
Besides it, if the post longest than 2,000 chars it will automaticaly croped.

In any case please visit the aouthor's site
Shared by peko


Test shared note

Hey,



I'm having a problem parsing a JSON file in AS3. Im trying to parse multiple JSON arrays, but don't really know how to get to the next after accessing the first one. My JSON file looks like:



{ 
"term": [
{
"id": 4211,
"place": "NEW YORK CITY"
},
{
"id": 2675,
"place": "WASHINGTON (DC)"

}
],
"term": [
{
"id": 4211,
"place": "NEW YORK CITY"
},
{
"id": 2675,
"place": "WASHINGTON (DC)"

}
]

}


My AS3 code looks like:



public function parseData(e:Event):void
{
var loader:URLLoader = URLLoader(e.target);
var values:Object = JSON.decode(loader.data);
var term:Array = values.term;
var counter:Number = 0;

for (var key:Object in term)
{
payload[counter] = [term[key].id, term[key].place];
counter++;
}

dispatchEvent(new Event(Event.COMPLETE));
}


I can get the data from the first array, but how would I structure my code so that I could iterate through 2 or more "term" arrays?



Thanks

[ by (author unknown) ]

6.11.09

The 20 best internet Flash games according to Telegraph

original post: http://ping.fm/xJMn7

http://ping.fm/M2bhj/2009/11/05/the-20-best-internet-flash-games-according-to-telegraph/

copyrights ©
This article was cross–posted by an robot from a google reader's shared RSS podcast.
If this post violate your copyrights – please leave a comment, after it this post will be removed.
The post in any case refers to it's author and has at least two links to the original site.
Besides it, if the post longest than 2,000 chars it will automaticaly croped.

In any case please visit the aouthor's site!
Telegraph is one of the most popular sites in the United Kingdom and ranked 279 worldwide according to Alexa (better than USA Today), so we can say it's a quite an authority.

Some days ago it published an article about the best 20 Flash internet games.

Do you expect another chart seeing ...

[ by (author unknown) ]

5.11.09

Movie Narrative Charts

original post: http://ping.fm/eLQtc

copyrights ©
This article was cross–posted by an robot from a google reader's shared RSS podcast.
If this post violate your copyrights – please leave a comment, after it this post will be removed.
The post in any case refers to it's author and has at least two links to the original site.
Besides it, if the post longest than 2,000 chars it will automaticaly croped.

In any case please visit the aouthor's site!

Source: http://xkcd.com/657/

In the LotR map, up and down correspond LOOSELY to northwest and southeast respectively.

[ (author unknown) ]

Augmented reality and QR codes [&nbsp;by&nbsp;makc3d&nbsp;]

original post: http://ping.fm/jZaHS

original post source


This is basically proof-of-concept that this is already possible in flash, today. What you do is take saqoosha’s FLARToolKit, add keno’s QR code reader, and load results into 3d engine (in this case, kiroukou’s sandy).


Clicky to see PoC


It doesn’t require webcam, just click to upload your test image. It also makes use of saqoosha’s PixelBender homography transform filter, since keno’s reader apparently doesn’t do that on its own (and generally is very sensitive to input bitmap, I must add). Default image comes from here.


Tagged: 3D, augmented reality, FLARToolKit, flash, QR, QRCodeReader, sand

[ makc3d ]

Crossposted by google reader from shared podcast

Fix smoothing bug on scaled bitmaps [&nbsp;by&nbsp;(author unknown)&nbsp;]

original post: http://ping.fm/RP3PJ

original post source

Every time you change the bitmapData source for a Bitmap you also need to set the smoothing property on your Bitmap to true (if you want the bitmap to use smoothing).


var bitmap : Bitmap = new Bitmap();
bitmap.smoothing = true;
trace(bitmap.smoothing); // true
bitmap.bitmapData = new BitmapData(320, 240);
trace(bitmap.smoothing); // false

[ (author unknown) ]

Fix smoothing bug on scaled bitmaps [&nbsp;by&nbsp;(author unknown)&nbsp;]

original post: http://ping.fm/eJSQL

original post source

Every time you change the bitmapData source for a Bitmap you also need to set the smoothing property on your Bitmap to true (if you want the bitmap to use smoothing).


var bitmap : Bitmap = new Bitmap();
bitmap.smoothing = true;
trace(bitmap.smoothing); // true
bitmap.bitmapData = new BitmapData(320, 240);
trace(bitmap.smoothing); // false

[ (author unknown) ]

Three More HMDs to Consider [&nbsp;by&nbsp;rouli&nbsp;]

original post: http://ping.fm/hi0eT

original post source


Cool NEC is developing a head mounted display named Tele Scouter which it hopes to begin shipping somewhere in 2010. The eyepiece shown in the image below has some really neat features like front facing camera and eye tracker. This enables a remote server to see whatever you’re looking at, and send you some relevant content to be displayed on the little screen. Not so cool- it’s going to cost a small fortune, and NEC is only planning to sell about 1000 of those in the next three years. More details on SlashGear.



Cooler Fellow Japanese company, Brother Industries is not left behind. Apparently they developed a light-weight HMD (by light-weight I mean 350 grams including batteries) that should also hit the stores in 2010. Like in Tele Scout’s case this unnamed HMD superimposes the image it generates over reality, not blocking the user’s view. So why is it cooler than NEC’s device? Well, they use terms like “green diode lasers”, and if that doesn’t make you blind, it’s surely very cool. More details on TechOn.



Coolest Now you can make a HMD right in your own home (though you’ll need an iPhone and some cardboard):



Though none of those devices (certainly not the last one :)) is aimed for the AR crowd, I guess that enthusiasts will find way to harness them for cool demos. Don’t forget to read Tom’s review of more concrete offerings from ISMAR.


Posted in Uncategorized Tagged: head up display

[ rouli ]

Color Matters - Color Scheme Designer [&nbsp;by&nbsp;Charles&nbsp;]

original post: http://ping.fm/cS3fp

original post source

I like colors, I hate colors. That’s why I love colors. A RIA without creative skinning job is not a complete RIA. A RIA with ugly color scheme is worse than a plain old HTML page. One tool I frequently come back to test (taste) the color scheme is the Color Scheme Designer.


colorschme Color Matters Color Scheme Designer


It gives you six schemes of color schemes, mono, complement, triad, tetrad, analogic and accented analogic.  These won’t make much of sense without seeing them with this nice little tool.


This best part of this tool is the Light page example and Dark page example tabs. They bring out a simulate page with the color scheme you selected. If you have something in mind for creating or re-skin a site, you could play this for hours.


 Color Matters Color Scheme Designer

 Color Matters Color Scheme Designer


[ Charles ]

Median Filtering [updated] [&nbsp;by&nbsp;Eugene&nbsp;]

original post: http://ping.fm/ebk8Y

original post source

Median Filter

If you follow me on Twitter you know that last days Mario, Nicoptere and me were trying to discover the fastest Median Filtering solution for Flash. Our first attempts were around 7 secs per 350×360 image size with small kernel 7×7! You may think that this is very slow, but Median Filtering is slow in all environments cause of its architecture. Anyway there is a constant time solution described here that will result in constant processing time for any radius. It is also mentioned that this is the fastest possible solution for now!

So no surprise all of us tried to implement it. ;) After some unlucky results Nicoptere decided to leave the scene but this is all because of lack of time I think! ;) Mario as he always do start trying to implement Linked Lists to make the process as fast as it possible. I’ve to say that Mario’s version is the fastest for now except one condition I describe later.

As for me I started with the simple Vector arrays and you will see this code inside my sources. This approach wasn’t very fast but stable for different kernel sizes. And the final version created using Linked Lists as Mario recommended. As it turns out that my version runs a little bit slower then Mario’s at small radius but performs faster when we extend filter radius size (starting radius 7).


Update:

I’ve merged my Histogram class with Mario’s filter applying structure (it is faster and more accurate) what results in faster and a lot more stable filter results. Now the speed doesn’t grow upon radius but it performs event faster with larger radius!

Added ByteArray based method using Joa’s TDSI tool. It performs faster at small radius but upon radius grow Linked List approach may become faster.

I’ve also added another ByteArray based method that works amazingly fast! Unfortunately this method will have unexpected results starting radius 16 in worst cases due to a tricky operation of packing integers in to single entry. I put it in MedianFilter Class under constantTimeBALimit name. But it is not included in demo application.


Test results:

Pure coded Linked Lists: 7×7 kernel: 0.8-1.17 sec; 101×101 kernel: 0.7-1.14 sec

ByteArray with TDSI: 7×7 kernel: 0.7-0.86 sec; 101×101 kernel: 1.0-1.17 sec

ByteArray with TDSI (Limited): 7×7 kernel: 0.43-0.51 sec; 101×101 kernel: 0.6-0.74 sec



(all tests done using standalone non-debug Flash Player version, Mac and PC)


Resources:

Test Application

Median Filter Class


Median Filter Median Filter Median Filter

[ Eugene ]

Flash Median Filter [&nbsp;by&nbsp;(author unknown)&nbsp;]

original post: http://ping.fm/t7qEp

original post source

As you might have read in Eugene's blog, he, Nicoptere and me were having a little competition who could come up with the fastest implementation of a median filter. Median filters have the unpleasant property that they can not be as easily optimized as for example blur filters. The median filter is also one of those types of filters that are not very well suited for an implementation in Pixel Bender due to the way Pixel Bender processes images (except maybe for a trivial 3x3 median).



What a median filter does is to take all the pixels within a certain radius around a pixel, sort them numerically ( channel by channel) and then return the color that ends up in the middle of the sorted list. You can imagine that doing this for every pixel in an image is quite a processing effort. Fortunately people much smarter than me have found ways to speed this up considerably. The paper I had stumbled across sometimes in the past was this one by Simon Perreault and Patrick Hebert. And whilst the authors even provided the C source for this filter I did not bother to look at it since I thought that things that are fast in C are not necessarily fast in Flash and decided to roll my own version of the algorithm based on maintaining the histograms and the kernel in the form of sorted linked lists. I figured that this would speed up the process of joining and separating the histograms since I could use a kind of "zipper" technique to do that. To my astonishment the first tests were extremely slow - even though I tested the speed with a release version (testing this with the debug version is about 10 times slower).



The breakthrough came with a tip Ralph Hauwert gave me: whenever you create a linked list class in Actionscript make sure that you use the "final" keyword for it. Until then I had thought that this keyword acted more as a decorative element without real impact. Well, I'm happy that I was wrong since the speedup in this case was extraordinary.



When you compare my implementation with Eugene's note that a kernel size of 7x7 in his example is the equivalent of a radius of 3 in mine (3+3+1=7), 17x17 is a radius of 8 (8+8+1=17). As far as I can see my version is faster until a radius of 7 but after that his version surpasses mine. I have to study his code now to see how he has solved it.



Since the median filter still takes considerable rendering time I added a "asynchronous" switch which allows to render the effect in background without stalling the rest of the application. Of course this will slow down the whole rendering process.



Here is my Median example

sourcecode and zipped sources

[ (author unknown) ]

Schrodinger?s Cat, RIP. [&nbsp;by&nbsp;courtney.gibbons&nbsp;]

original post: http://ping.fm/GD7Cw

original post source

Comic

Today’s comic brought to you by PETHA (People for the Ethical Treatment of Hypothetical Animals).



Copyright © 2009 Brown Sharpie. Thanks for reading Brown Sharpie! Check out the shop: Brown Sharpie at cafepress
:)

[ courtney.gibbons ]

Introducing AS3 Multitouch Gesture Demo Application/Utility [&nbsp;by&nbsp;SethSandler&nbsp;]

original post: http://gasubasu.com/2009/10/14/introducing-as3-multitouch-gesture-demo-applicationutility-bysethsandler/

original post source

 Introducing AS3 Multitouch Gesture Demo Application/Utility

gestureDemo 300x221 Introducing AS3 Multitouch Gesture Demo Application/UtilityOn my last project I had to use a gesture to initiate an event. Due to this, I recently started experimenting in creating a simple multitouch version of some gesture engines that are available. I’ve come across three that are already available in AS3 and chose to start with the $1 gesture algorithm http://depts.washington.edu/aimgroup/proj/dollar/. It only seems fitting to start with this one since Andy Wilson of microsoft research (and many multitouch devices) had a hand in it’s development.


Like most algorithms, this one matches points drawn with a template that’s already stored. After the gesture is finished, it is matched up against templates in the database and given a percentage of how much it matched it’s closest template (from 0-1). One of the coolest things about this engine is that it’s orientation-less. This means, no matter how you’re orientated on the surface it’ll still recognize the gesture.


The main thing I contributed to the already created $1 gesture port was the ability to have multiple simultaneous gestures occurring at once. This means a single user can perform more than one gesture at a time or multiple users can perform their own gestures while someone else is using the device. However, there are flaws with this algorithm that I’m not fond of  that are performance (speed) related. I’ve only tested with up to 4 touches though so if someone can test with more, please let me know how it runs.


Currently, the demo isn’t fully segregated form the core gesture classes and therefore there’s still some work to be done so that the gesture classes can be used without the demo itself. In the meantime, go ahead and test this out and make sure to give some feedback; it also works with the mouse. The demo allows you to draw a gesture and if it matches on in the database, that gesture will ‘light up.’


The tolerance is set at 80% and therefore if a gesture doesn’t match 80% of a template, it’s not recognized. Both the source and swf file are included. To test the demo, just load up the TouchGestureDemo.swf in flashplayer or a web browser.


Stay tuned for more on this as i’ll show the basics for using this in your own projects in case you need help.


Thanks to Tito (Mathieu Vibrel) and the pyMT crew for pointing me in the right direction.


[filebase:file:file1]


 Introducing AS3 Multitouch Gesture Demo Application/Utility

[ SethSandler ]

Exporting animation from 3DMax to FLARToolkit

original post: http://gasubasu.com/2009/11/05/exporting-animation-from-3dmax-to-flartoolkit/

Just select all your animated objects and run this little one ; )


if selection.count > 0 then (

output_name = getSaveFileName caption:"Animation File" types:"Animation Class (*.as)|*.as"

if output_name != undefined then (

output_file = createfile output_name

for o in selection do (

format "rpublic static var %:Array = [" o.name to:output_file
for t = animationrange.start to animationrange.end do (
at time t (
tx = formattedPrint o.pos.x format:"6.6f"
ty = formattedPrint o.pos.y format:"6.6f"
tz = formattedPrint o.pos.z format:"6.6f"

rx = formattedPrint (o.rotation.x * 180 / pi) format:"6.6f"
ry = formattedPrint (o.rotation.y * 180 / pi) format:"6.6f"
rz = formattedPrint (o.rotation.z * 180 / pi) format:"6.6f"

sx = formattedPrint o.scale.x format:"6.3f"
sy = formattedPrint o.scale.y format:"6.3f"
sz = formattedPrint o.scale.z format:"6.3f"

format "rt%, %, %, %, %, %, %, %, %" tx ty tz rx ry rz sx sy sz to:output_file
if t != animationrange.end then format "," to:output_file
)
)

format "r];" to:output_file
)

close output_file
edit output_name

)

)

4.11.09

???????????? ?? 3D ?????? ???????????x ? FLARToolkit

original post: http://gasubasu.com/2009/11/04/%d1%81%d0%bf%d0%b5%d1%86%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-3d-%d0%bc%d0%be%d0%b4%d0%b5%d0%bb%d0%b8-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d1%83%d0%b5%d0%bc%d1%8bx-%d0%b2/

Спецификация на 3D модели
используемые в flash AR проектах

Ограничение по количесву треугольников

  • Общее колличество  видимых треугольных граней не должно превышать 5000 шт.
  • Предел еффективной работы (без тормозов) 3000 шт.

Ограничение по форматам граней

  • Все грани должны быть треугольными
  • Модель не должна содержать мелких граней, т.е. <10% от среднего размера грани
  • Грани не должны находится очень близко, т.к.  Z сортировка во флеше - ужас

Ограничение по материалам / текстурам

  • Материалы должны быть элементарными, однотекстурными
  • Материалы могут / должны иметь прозрачность
  • Альфа канал материала / текстуры должен быть в той же текстуре
  • Соответственно предпочтительный формат текстуры PNG (с 24 бит/цвет)
  • Очень желательно чтобы все развертки моделей находились в одной текстуре
  • Все материалы / текстуры должны быть внятно поименованы латиницей без пробелов

Общие ограничения по модели

  • Модель должна быть низкополигональной
  • Модель не должна содержать полигонов которые никогда не будут видны в данной сцене
  • Все сложные / плавные грани должны быть в техтурах а не в геометерии, т.е. если нужно разместить текст, то это нужно делать с помощью текстур, а не экструдить сплайны (см. ограничение по колличеству полигонов)
  • Иерархия модели должна быть одноуровневой и не содержать групп
    (особенно если объекты анимируются)
  • Все объекты сцены должны быть внятно поименованы латиницей без пробелов


Оригинальный блог http://gasubasu.com

Peko google reader`s favorites